繁体   English   中英

PDO 获取最后插入的 ID

[英]PDO get the last ID inserted

我有一个查询,我想插入最后一个 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()

我究竟做错了什么?

那是因为那是一个 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();

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

正确的:

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

不正确:

$stmt = $this->conn->prepare("SELECT * FROM users");
$sonuc = $stmt->execute();
$LAST_ID = $this->conn->lastInsertId(); //always return string(1)=0

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

像这样 $lid = $conn->lastInsertId();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM