PDO得到插入的最后一个ID
我有一个查询,我想要得到最后插入的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来做,你可以像普通的select查询那样做:
$stmt = $db->query("SELECT LAST_INSERT_ID()"); $lastId = $stmt->fetchColumn();
lastInsertId()仅在INSERT查询后起作用。
正确:
$stmt = $this->conn->prepare("INSERT INTO users(userName,userEmail,userPass) VALUES($username,$email,$pass)"); $sonuc = $stmt->execute(); $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