当我插入一行时,我的表的‘id’字段会自动增加.我想插入一行,然后获取该ID.
我会照我说的那样做,但是有没有一种方法可以不用担心从插入行到获得id之间的时间呢?
我知道我可以在数据库中查询与输入的信息匹配的行,但是有很大的变化,会有重复项,唯一的区别是id.
当我插入一行时,我的表的‘id’字段会自动增加.我想插入一行,然后获取该ID.
我会照我说的那样做,但是有没有一种方法可以不用担心从插入行到获得id之间的时间呢?
我知道我可以在数据库中查询与输入的信息匹配的行,但是有很大的变化,会有重复项,唯一的区别是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);
无论你做什么,不要先插入,然后再做"SELECT MAX(id) FROM mytable
".就像你说的,这是比赛条件,没有必要.mysqli_insert_id()
已经有了这个功能.
另一种方法是一次运行两个查询,并使用MySQL
的LAST_INSERT_ID()
方法,其中两个表同时修改(并且PHP不需要任何ID),如下所示:
mysqli_query($link, "INSERT INTO my_user_table ...;
INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())");
Note确保每个连接分别跟踪ID(因此,冲突已经被防止).