AOP récupérer le dernier ID inséré
J'ai une question, et je veux récupérer le dernier ID inséré. Le champ ID est la clé primaire et de l'auto incrémentation.
Je sais que je dois utiliser cette instruction:
LAST_INSERT_ID()
De cette déclaration, qui fonctionne avec une requête comme ceci:
$query = "INSERT INTO `cell-place` (ID) VALUES (LAST_INSERT_ID())";
Mais si je veux obtenir l'ID à l'aide de cette déclaration:
$ID = LAST_INSERT_ID();
J'obtiens cette erreur:
Fatal error: Call to undefined function LAST_INSERT_ID()
Ce que je fais mal?
Vous devez vous connecter pour publier un commentaire.
C'est parce que c'est une fonction SQL, pas de PHP. Vous pouvez utiliser
PDO::lastInsertId()
.Comme:
Si vous voulez le faire avec SQL au lieu de l'API PDO, vous le feriez normalement requête de sélection:
lastInsertId
estcamelCase
etLAST_INSERT_ID
estsnake_case
. Malheureusement, PHP ne colle pas à la soit la convention de nommage.Screaming snake case
. la deuxième, c'est MySQL convention de nommage et n'est pas PHPSCREAMING_SNAKE_CASE
est mentionné sur ce lien Wiki.lastInsertId
est un PHP de Données la fonction de l'Objet. PHP utilise à la foiscamelCase
(lastInsertId
) etsnake_case
(str_replace
).SELECT LAST_INSERT_ID()
est une fonction MySQLpdo::lastInsertId()
affecter le dernier id inséré valeur retournée? J'ai remarqué que je reçois 0 dos lors que le surplus de la requête SELECT avant d'appelerlastInsertId()
. L'exécution depdo::query('SELECT LAST_INSERT_ID()')
mais me donnent encore attendus dernier id inséré valeur.lastInsertId() uniquement après la requête d'INSERTION.
Correct:
Incorrect:
Vous pouvez obtenir l'id de la dernière transaction en cours d'exécution lastInsertId() la méthode sur l'objet de connexion($conn).
Comme ceci $lid = $conn->lastInsertId();
S'il vous plaît consulter la documentation https://www.php.net/manual/en/language.oop5.basic.php