194 votes

AOP obtenir le dernier ID inséré

J'ai une requête, et je veux que la dernière pièce d'identité soit insérée. L'ID de champ est la clé primaire et l'incrémentation automatique.

Je sais que je dois utiliser cette déclaration :

LAST_INSERT_ID()

Cette instruction fonctionne avec une requête comme celle-ci :

$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()

Qu'est-ce que je fais de mal ?

445voto

Corbin Points 17420

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

J'aime :

$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();

27voto

Ayhan Kesicioğlu Points 167

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

Correct :

$stmt = $this->conn->prepare("INSERT INTO users(userName,userEmail,userPass) 
                              VALUES(?,?,?);");
$sonuc = $stmt->execute([$username,$email,$pass]);
$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

-5voto

Kanton Samad Points 19

Vous pouvez obtenir l'identifiant de la dernière transaction en exécutant la méthode lastInsertId() sur l'objet de connexion ($ conn).

Comme ceci $ lid = $ conn->lastInsertId() ;

Veuillez consulter les documents https://www.php.net/manual/fr/language.oop5.basic.php

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X