我在3〜4年前编程了,我记得在2005年的一本关于使用mysql_insert_id检索last_inser_id的安全性的php安全书。
在书中说如果同时向服务器发出多个请求(数千个),可能会使last_insert_id的检索错误,以用户的id指向其他用户结束。
现在我们在2013年,你们要对此发表什么,特别是使用codeigniter insert_id()。
pd:我试图在其他地方找到有关我问题的相关信息,但我没有找到具体的东西。
答案 0 :(得分:7)
写这本书的人充满了废话。 LAST_INSERT_ID()
特定于连接,并且该连接特定于当前对脚本的调用。在经过一夜的大量饮酒之后,如果不重新编写一些PHP源代码,我想不出办法打破这个问题。
可能如果您正在使用持久连接,然后如果最后一个连接执行了插入操作,那么然后您调用了{{1在成功插入之前[你检查你的返回值,对吗?],然后可能你可能得到一个坏的值。但是,我很难想象这是可能的。
只要您在LAST_INSERT_ID()
之后立即运行LAST_INSERT_ID()
,您就会立即返回正确的值。
如果你真的想要,你可以打破它:
INSERT