小编典典

PHP/MySQL 插入行然后获取 'id'

all

当我插入一行时,我的表的“id”字段会自动增加。我想插入一行然后获取该 ID。

我会按照我说的那样做,但是有没有一种方法可以做到而不用担心插入行和获取 id 之间的时间?

我知道我可以在数据库中查询与输入的信息匹配的行,但是会有很大的变化,会有重复,唯一的区别是 id。


阅读 118

收藏
2022-07-02

共1个答案

小编典典

$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);

mysqli_insert_id()

不管你做什么,不要插入然后做一个“ SELECT MAX(id) FROM mytable”。就像你说的,这是一个竞争条件,没有必要。mysqli_insert_id()已经有了这个功能。


另一种方法是一次运行两个查询,并使用MySQL‘sLAST_INSERT_ID()方法,其中两个表都被同时修改(并且 PHP 不需要任何 ID),例如:

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

请注意,每个连接都单独跟踪 ID(因此,已经防止了冲突)。

2022-07-02