33 Voix

MySQL/PHP: Comment récupérer le dernier INSERT ID

Info de Stefan Trost | 23/11/2023 à 21:37

Lorsque nous insérons un nouvel enregistrement dans une table MySQL et que la table contient une colonne AUTO_INCREMENT, un nouvel ID unique est automatiquement attribué à notre enregistrement, sans que nous sachions au préalable de quelle ID il s'agit (si nous n'avons pas explicitement spécifié une ID à utiliser). Cependant, parfois, nous avons besoin exactement de cette ID dans notre script ensuite. Par conséquent, dans cette info, je voudrais vous montrer comment obtenir cette ID.

Nous souhaitons examiner deux approches différente: dans notre premier exemple, nous utilisons la fonction PHP mysqli_insert_id() pour lire l'ID. Après cela, dans notre deuxième exemple, nous examinons une possibilité alternative qui fonctionne exclusivement avec MySQL.

Première Façon: mysqli_insert_id

PHP nous fournit la fonction mysqli_insert_id(), qui fera exactement cette tâche pour nous. Voici un exemple :

mysqli_query($db, "INSERT INTO tab (fname) VALUES ('Anne')");
$id = mysqli_insert_id($db);
mysqli_query($db, "UPDATE tab SET fname = 'Anna' WHERE id = $id");

Dans cet exemple, nous ajoutons d'abord une nouvelle ligne à la table "tab" et puis nous déterminons l'ID créé lors de ce processus à l'aide de mysqli_insert_id(). Après cela, nous utilisons dette ID pour modifier les données précédemment stockées.

Important: mysqli_insert_id() fait toujours référence à la dernière requête effectuée. C'est pourquoi vous devez récupérer l'ID - si nécessaire - toujours immédiatement après la requête INSERT, sinon l'ID ne sera plus accessible. Si la dernière requête ne génère pas une ID AUTO_INCREMENT, mysqli_insert_id() renvoie la valeur 0. Si une instruction INSERT a généré plusieurs IDs, la première valeur créée avec succès par cette instruction sera renvoyée.

Deuxième Façon: LAST_INSERT_ID

Ensuite, j'aimerais vous présenter une autre option que vous pouvez utiliser directement dans MySQL sans PHP:

SELECT LAST_INSERT_ID()

LAST_INSERT_ID() nous donne toujours le dernier ID attribué. Contrairement à mysqli_insert_id(), cela fonctionne également lorsque d'autres requêtes sont effectuées entre-temps. Ainsi, avec cela, vous pouvez connaître l'ID, même si la dernière commande INSERT est à quelques pas de code.

Avec "SELECT LAST_INSERT_ID()" nous récupérons directement le dernier ID comme résultat de notre instruction. Cependant, nous pouvons également utiliser LAST_INSERT_ID() directement dans d'autres instructions MySQL, par exemple pour insérer le dernier ID dans une table:

INSERT INTO tab (id, pid) VALUES (1, LAST_INSERT_ID());

Ou pour pouvoir accéder à l'enregistrement de données qui vient d'être inséré dans une autre instruction:

INSERT INTO tab (fname) VALUES ('Anne');
UPDATE tab SET fname = 'Anna' WHERE id = LAST_INSERT_ID();

Avec cela, nous avons recréé l'exemple PHP de la dernière section avec MySQL pur sans aucun détour via PHP.

RépondrePositifNégatif

Sur l’Auteur

AvatarVous pouvez trouver des logiciels de Stefan Trost sur fr.sttmedia.com. Avez-vous besoin d'un logiciel personnalisé selon vos propres besoins? Écrivez-nous: fr.sttmedia.com/contact
Voir Profil

 

Sujets Connexes

VirtualBox: Changer la Date et l'Heure

Tutoriel | 10 Commentaires

CSS: Comment inclure CSS dans HTML

Tutoriel | 0 Commentaires

Avis Important

Veuillez noter: Les contributions publiées sur askingbox.com sont des contributions d’utilisateurs et ne doivent pas remplacer les conseils d’un professionnel. Ils ne sont pas vérifiés par des indépendants et ne reflètent pas nécessairement l’opinion de askingbox.com. Apprendre encore plus.

Participer

Posez votre propre question ou écrivez votre propre article sur askingbox.com. Voici comment.