在 'id' 字段自动递增的 MySQL 表中插入一行时,检索插入行的“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); ?>
另一种方法涉及使用 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中文网其他相关文章!