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.
Sur l’Auteur
Vous 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
MySQL: Sauts de Ligne dans MySQL
Conseil | 0 Commentaires
Script Batch: Arrêter Ordinateur Windows
Tutoriel | 4 Commentaires
MySQL: Ajouter une nouvelle Colonne à une Table
Tutoriel | 0 Commentaires
MySQL: Supprimer Données de Table - Différence entre TRUNCATE, DELETE et DROP
Tutoriel | 0 Commentaires
VirtualBox: Changer la Date et l'Heure
Tutoriel | 10 Commentaires
Renommer des Fichiers en ses Noms de Dossier
Tutoriel | 0 Commentaires
Mettre Windows par Script en Mode Veille ou Veille Prolongée
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.