Wil*_*aan 144 php mysql database pdo
我有一个查询,我想要插入最后一个ID.字段ID是主键并自动递增.
我知道我必须使用这个声明:
LAST_INSERT_ID()
Run Code Online (Sandbox Code Playgroud)
该语句适用于这样的查询:
$query = "INSERT INTO `cell-place` (ID) VALUES (LAST_INSERT_ID())";
Run Code Online (Sandbox Code Playgroud)
但是,如果我想使用此声明获取ID:
$ID = LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Fatal error: Call to undefined function LAST_INSERT_ID()
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
Cor*_*bin 328
那是因为这是一个SQL函数,而不是PHP.你可以用PDO::lastInsertId().
喜欢:
$stmt = $db->prepare("...");
$stmt->execute();
$id = $db->lastInsertId();
Run Code Online (Sandbox Code Playgroud)
如果你想用SQL代替PDO API,你可以像普通的选择查询一样:
$stmt = $db->query("SELECT LAST_INSERT_ID()");
$lastId = $stmt->fetchColumn();
Run Code Online (Sandbox Code Playgroud)
小智 12
lastInsertId()仅在INSERT查询后起作用.
正确:
$stmt = $this->conn->prepare("INSERT INTO users(userName,userEmail,userPass)
VALUES(?,?,?);");
$sonuc = $stmt->execute([$username,$email,$pass]);
$LAST_ID = $this->conn->lastInsertId();
Run Code Online (Sandbox Code Playgroud)
不正确:
$stmt = $this->conn->prepare("SELECT * FROM users");
$sonuc = $stmt->execute();
$LAST_ID = $this->conn->lastInsertId(); //always return string(1)=0
Run Code Online (Sandbox Code Playgroud)