Mysql插入并选择插入的id

时间:2014-03-22 09:13:18

标签: php mysql sql

我在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和预处理语句。

感谢您的想法。

3 个答案:

答案 0 :(得分:2)

您对PHP PDO的多用户使用有错误的假设。最后一个插入ID存储在连接时创建的PDO对象中。所以这个"最后一次插入ID"每个连接存储一个值。这样,同时通话不会互相干扰。

此处manual reference

答案 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();