代码点火器 insert_id() 函数正确检索最后一个插入 ID


Codeigniter insert_id() function retrieve correctly the last insert id?

我在3~4年前就开始编程,我记得在2005年的一些php安全书中,关于使用mysql_insert_id检索last_inser_id的安全性。

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

现在我们在 2013 年,你们对此有什么看法,尤其是使用 codeigniter insert_id()。

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

写这本书的人充满了废话。 LAST_INSERT_ID()特定于连接,连接特定于脚本的当前调用。我想不出一种方法来打破这一点,在一夜酗酒后重写一些PHP源代码。

也许如果你使用的是持久连接,然后如果最后一个连接进行了插入,然后你在自己成功插入之前调用了LAST_INSERT_ID()[你检查你的返回值,对吧?],那么也许你可能会得到一个错误的值。但是,我很难想象这是可能的。

只要你在刚刚INSERT之后立即运行LAST_INSERT_ID(),它总是会返回正确的值。

如果您真的想要,您可以通过以下方式打破它:

$db_obj->insert('some data');
$db_obj->some_function_that_also_inserts_but_i_forgot_it_does_that('derp');
$id = $db_obj->last_insert_id();