如何在MySQL中获取最后更新行的ID?

156

如何使用 PHP 获取 MySQL 中最后更新行的 ID?


2
mysqli_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
如果您只是进行插入操作,并且想要从同一会话中获取一个条目,请按照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; 以获取最近修改的行。

-11

没必要写那么长的Mysql代码。在PHP中,查询应该长这个样子:

$updateQuery = mysql_query("UPDATE table_name SET row='value' WHERE id='$id'") or die ('Error');
$lastUpdatedId = mysql_insert_id();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接