首页 >数据库 >mysql教程 >如何在 PHP/MySQL 中高效检索 INSERT 后的自增 ID?

如何在 PHP/MySQL 中高效检索 INSERT 后的自增 ID?

Barbara Streisand
Barbara Streisand原创
2025-01-05 02:14:46356浏览

How to Efficiently Retrieve the Auto-Increment ID After an INSERT in PHP/MySQL?

在 PHP/MySQL 中插入一行并检索其 'id'

在 'id' 字段自动递增的 MySQL 表中插入一行时,检索插入行的“id”是一项常见任务。虽然一种方法涉及插入行,然后查询匹配的行,但这会引入潜在的竞争条件。

解决方案:使用 mysqli_insert_id()

为了避免此问题,PHP 提供了 mysqli_insert_id( ) 函数,它直接检索给定 MySQL 连接的最后插入行的 ID。此方法可确保可靠地获取 ID,而不会出现竞争条件或重复结果的风险。

<?php
$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()

另一种方法涉及使用 MySQL 的 LAST_INSERT_ID() 函数,可以在多表插入操作中使用。在这种方法中,行被插入到多个表中,并且 LAST_INSERT_ID() 函数确保“id”传播到单个查询中修改的所有表中。

<?php
mysqli_query($link, "INSERT INTO my_user_table ...;
  INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())");
?>

注意: 每个 MySQL 连接都维护自己的“id”跟踪,防止不同连接之间发生冲突。

以上是如何在 PHP/MySQL 中高效检索 INSERT 后的自增 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn