首页 > 数据库 > mysql教程 > 如何在没有竞争条件的情况下在 PHP 中检索 MySQL 插入后的自动递增 ID?

如何在没有竞争条件的情况下在 PHP 中检索 MySQL 插入后的自动递增 ID?

Barbara Streisand
发布: 2024-12-27 08:50:18
原创
956 人浏览过

How to Retrieve the Auto-Incrementing ID After a MySQL Insert in PHP Without Race Conditions?

在没有竞争条件的情况下在 PHP/MySQL 中插入行后获取 'id' 字段

当使用以下命令将行插入到 MySQL 表中时自动递增的“id”字段,通常需要检索该“id”值以在后续操作中使用。然而,简单地插入行,然后在数据库中查询“id”,如果同时插入另一行,可能会导致竞争条件。

确保“id”检索完整性的可靠方法是使用 mysqli_insert_id() 函数。此函数返回在当前连接上执行的最后一个 INSERT 语句生成的 ID。

以下是实现它的方法:

$link = mysqli_connect('127.0.0.1', 'my_user', 'my_pass', 'my_db');
mysqli_query($link, "INSERT INTO mytable (1, 2, 3, 'blah')");
$id = mysqli_insert_id($link);
登录后复制

另一种方法(但不推荐)是插入使用 LAST_INSERT_ID() 将行放入主表中,并将相应行放入第二个表中,该第二个表在单个原子事务中引用主表的“id”

mysqli_query($link, "INSERT INTO my_user_table ...;
  INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())");
登录后复制

请注意,每个 MySQL 连接单独跟踪 'id' 值,防止并发插入时发生冲突。

以上是如何在没有竞争条件的情况下在 PHP 中检索 MySQL 插入后的自动递增 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板