“mysql_insert_id - 获取在最后一个查询中生成的ID”mysql_insert_id()如何工作?
想象3个在线用户调用相同的查询,例如,插入表格。 用户一插入表中的行,但用户号。三个将是最后一个调用查询的用户,仅在用户1之后几毫秒。
什么会为用户1返回mysql_insert_id?这是他的Id还是用户三的Id?
如果此功能已被弃用,我可以使用什么?
“mysql_insert_id - 获取在最后一个查询中生成的ID”mysql_insert_id()如何工作?
想象3个在线用户调用相同的查询,例如,插入表格。 用户一插入表中的行,但用户号。三个将是最后一个调用查询的用户,仅在用户1之后几毫秒。
什么会为用户1返回mysql_insert_id?这是他的Id还是用户三的Id?
如果此功能已被弃用,我可以使用什么?
插入ID被跟踪每个连接。没有持久连接,每个脚本执行都有自己的连接。通过持久连接,每个Apache进程都有自己的MySQL连接(但是每个进程都依次提供结果 - 所以这不是问题)。只要您在与PHP中的INSERT
查询具有相同的页面负载范围内调用mysql_insert_id()
即可,您没有问题。
要回答问题的第二部分,您应该使用mysqli
或PDO
(首选)库。 mysqli
有相应的mysqli_insert_id
。 PDO
有一个lastInsertId()
方法。
+1,但不同意'(首选)' – Mchl 2013-03-07 15:29:54
@Mchl只是尝试将一个数组绑定到IN()一次,并且您将立即改变主意。 – 2013-03-07 15:38:05
@YourCommonSense哈哈哈。在为什么PDO是一个很好的选择的各种其他原因。它抽象出实现细节。您可以在不必更改代码的情况下在底层数据库之间切换。您只需修改不兼容的查询。 – 2013-03-07 15:43:53
l00k right - >这个问题的数千个问题已经 – 2013-03-07 15:24:45
可能重复[是mysql \ _insert \ _id线程安全吗?](http://stackoverflow.com/questions/1808337/is-mysql-insert-id线程安全) – legoscia 2014-03-07 18:47:24