我在mysql表中插入了一行,其中包含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和预处理语句。
感谢您的想法。
答案 0 :(得分:2)
您对PHP PDO的多用户使用有错误的假设。最后一个插入ID存储在连接时创建的PDO对象中。所以这个"最后一次插入ID"每个连接存储一个值。这样,同时通话不会互相干扰。
答案 1 :(得分:1)
首先进行插入
INSERT INTO some_table (`name`) VALUES ('test name');
然后立即执行
SELECT id FROM some_table WHERE name = 'test name';
并确保捕获后者的输出(这可能会因您连接到数据库的方式而异)。
编辑:或者,您可以在插入后立即执行此操作:
SELECT id FROM some_table WHERE name = 'test name' ORDER BY id DESC LIMIT 1
这样您就可以避免使用相同的名称获得更早的输入。
答案 2 :(得分:1)
试试这个
$sql = "INSERT INTO some_table (`name`) VALUES ('test name')";
$result = mysql_query($sql);
$last_id = mysql_insert_id();