我有一个查询,我想要插入最后一个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()
我做错了什么?
答案 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();