2mysqli_insert_id($link)会准确返回最后更新行的id。我在我的项目中使用这个函数来达到同样的目的。你可以在同步或异步查询中都使用它。只需将$lastupdated_row_id = mysqli_insert_id($link)插入到你的代码中,它就能为你工作。 - Naeem Ul Wahhab
1如果你更新,难道不已经知道行的ID了吗?我猜可能有一些情况你不知道。 - jlcharette
1你可能在update查询中使用了where子句,那么为什么不能在select查询中使用相同的where子句呢?UPDATE foo WHERE bar = 1; SELECT id FROM foo WHERE bar = 1? - Salman A
12个回答
2
2
如果您只是进行插入操作,并且想要从同一会话中获取一个条目,请按照peirix的答案操作。如果您正在进行修改,则需要修改数据库模式以存储最近更新的条目。 如果您想要来自最后修改的id,这可能是来自不同会话的(即不是刚刚由PHP代码运行完成的会话,而是响应于不同请求完成的会话),您可以在表中添加一个名为last_modified的TIMESTAMP列(请参见http://dev.mysql.com/doc/refman/5.1/en/datetime.html了解信息),然后在更新时设置last_modified=CURRENT_TIME。 设置完毕后,您可以使用如下查询:
SELECT id FROM table ORDER BY last_modified DESC LIMIT 1;
以获取最近修改的行。
UPDATE foo WHERE bar = 1; SELECT id FROM foo WHERE bar = 1
? - Salman A