有没有办法让MySQL返回INSERT命令产生的行?

Ben*_*ley 2 php mysql

我已经做了一段时间的基本MySQL,但除此之外什么也没做.我想知道当我在表中插入一个新行时,是否有办法让行回显给我,或其他什么东西.基本上我有一个带有自动编号字段的表,我希望能够尽可能快速,轻松地获得该自动编号.如果我不能将行返回给我,还有什么我应该做的只是运行第二个查询以获得最高的autonum吗?这是不是允许某些其他进程或用户更新表的(轻微的,非常非常轻微的),这不再是正确的数字?目前我只是搜索一行,其中包含我刚刚输入的内容,甚至这似乎都会给我带来问题.

我正在使用PHP 5.1和MySQL 5.0.45.

谢谢你的帮助.

Ser*_*pov 5

您可以使用LAST_INSERT_ID()哪个在当前连接的范围内工作.

生成的ID在每个连接的基础上在服务器中维护.这意味着函数返回给定客户端的值是为该客户端影响AUTO_INCREMENT列的最新语句生成的第一个AUTO_INCREMENT值.此值不受其他客户端的影响,即使它们生成自己的AUTO_INCREMENT值.此行为可确保每个客户端都可以检索自己的ID,而无需关心其他客户端的活动,也无需锁定或事务.

更多信息在这里.

  • 你如何回应middaparka的评论,你不应该尝试从PHP中发出"LAST_INSERT_ID()"SQL查询?我想我会使用内置的PHP函数mysql_insert_id. (2认同)