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