PDO获取插入的最后一个ID

时间:2012-05-21 07:17:52

标签: php mysql database pdo

我有一个查询,我想要插入最后一个ID。字段ID是主键并自动递增。

我知道我必须使用这句话:

LAST_INSERT_ID()

该语句适用于这样的查询:

$query = "INSERT INTO `cell-place` (ID) VALUES (LAST_INSERT_ID())";

但如果我想使用此声明获取ID:

$ID = LAST_INSERT_ID();

我收到此错误:

Fatal error: Call to undefined function LAST_INSERT_ID()

我做错了什么?

3 个答案:

答案 0 :(得分:300)

那是因为那是一个SQL函数,而不是PHP。您可以使用PDO::lastInsertId()

像:

$stmt = $db->prepare("...");
$stmt->execute();
$id = $db->lastInsertId();

如果你想用SQL而不是PDO API来做,你可以像普通的选择查询一样:

$stmt = $db->query("SELECT LAST_INSERT_ID()");
$lastId = $stmt->fetchColumn();

答案 1 :(得分:6)

lastInsertId()仅在INSERT查询后才起作用。

<强>正确:

&&

<强>不正确:

$stmt = $this->conn->prepare("INSERT INTO users(userName,userEmail,userPass) 
                              VALUES(?,?,?);");
$sonuc = $stmt->execute([$username,$email,$pass]);
$LAST_ID = $this->conn->lastInsertId();

答案 2 :(得分:-2)

您可以通过在连接对象($ conn)上运行lastInsertId()方法来获取上一个事务的ID。

就像$ lid = $ conn-> lastInsertId();

请查看文档https://www.php.net/manual/en/language.oop5.basic.php