PDO récupère le dernier ID inséré

J'ai une requête, et je veux obtenir le dernier ID inséré. L'ID de champ est la clé primaire et l'incrémentation automatique.

Je sais que je dois utiliser cette instruction:

LAST_INSERT_ID()

Cette instruction fonctionne avec une requête comme ceci:

$query = "INSERT INTO `cell-place` (ID) VALUES (LAST_INSERT_ID())";

Mais si je veux obtenir L'ID en utilisant cette déclaration:

$ID = LAST_INSERT_ID();

Je reçois cette erreur:

Fatal error: Call to undefined function LAST_INSERT_ID()

Ce que je fais mal?

120
demandé sur William Kinaan 2012-05-21 11:17:51

2 réponses

C'est parce que c'est une fonction SQL, pas PHP. Vous pouvez utiliser PDO::lastInsertId().

Comme:

$stmt = $db->prepare("...");
$stmt->execute();
$id = $db->lastInsertId();

Si vous voulez le faire avec SQL au lieu de L'API PDO, vous le feriez comme une requête select normale:

$stmt = $db->query("SELECT LAST_INSERT_ID()");
$lastId = $stmt->fetchColumn();
259
répondu Corbin 2017-02-01 08:06:05

LastInsertId () ne fonctionne qu'après la requête INSERT.

Correct:

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

Incorrect:

$stmt = $this->conn->prepare("SELECT * FROM users");
$sonuc = $stmt->execute();
$LAST_ID = $this->conn->lastInsertId(); //always return string(1)=0
4
répondu Ayhan Kesicioğlu 2017-03-18 07:32:23