Codeigniter insert_id()函数正确检索最后一个插入ID?

时间:2013-10-23 20:42:08

标签: php codeigniter insert-id

我在3〜4年前编程了,我记得在2005年的一本关于使用mysql_insert_id检索last_inser_id的安全性的php安全书。

在书中说如果同时向服务器发出多个请求(数千个),可能会使last_insert_id的检索错误,以用户的id指向其他用户结束。

现在我们在2013年,你们要对此发表什么,特别是使用codeigniter insert_id()。

pd:我试图在其他地方找到有关我问题的相关信息,但我没有找到具体的东西。

1 个答案:

答案 0 :(得分:7)

写这本书的人充满了废话。 LAST_INSERT_ID()特定于连接,并且该连接特定于当前对脚本的调用。在经过一夜的大量饮酒之后,如果不重新编写一些PHP源代码,我想不出办法打破这个问题。

可能如果您正在使用持久连接,然后如果最后一个连接执行了插入操作,那么然后您调用了{{1在成功插入之前[你检查你的返回值,对吗?],然后可能可能得到一个坏的值。但是,我很难想象这是可能的。

只要您在LAST_INSERT_ID()之后立即运行LAST_INSERT_ID(),您就会立即返回正确的值。

如果你真的想要,你可以打破它:

INSERT