Mysql插入和选择插入的id


Mysql insert and select id of inserted

我在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

这样就可以避免获得先前的同名输入。