我在mysql表中插入1行,该表具有auto_increment id值,并希望获得该行的id。你知道像
这样的结构吗?{
INSERT INTO some_table (`name`) VALUES ('test name')
ON SUCCESS RETURN id
}
表结构:id: int not null auto_increment Primary key
name: Varchar (20)
我读了关于LAST_INSERT_ID,但如果我的脚本被同时调用,有2个不同的插入和LAST_INSERT_ID可以返回错误的值的变化。
我正在使用php和准备好的语句,不允许多次提交和/或回滚。
您对多用户使用PHP PDO的假设是错误的。最后一个插入ID存储在连接时创建的PDO对象中。因此,这个"最后插入ID"值存储在每个连接上。这样,同时调用就不会互相干扰。
try this
$sql = "INSERT INTO some_table (`name`) VALUES ('test name')";
$result = mysql_query($sql);
$last_id = mysql_insert_id();
首先插入
INSERT INTO some_table (`name`) VALUES ('test name');
然后紧接着do
SELECT id FROM some_table WHERE name = 'test name';
并确保捕获后一个的输出(这可能取决于您连接到DB的方式)。
EDIT:或者,您可以在insert:
之后执行此操作。SELECT id FROM some_table WHERE name = 'test name' ORDER BY id DESC LIMIT 1
这样就可以避免获得先前的同名输入。