Maison > développement back-end > tutoriel php > Comment puis-je récupérer efficacement l'ID généré automatiquement après une INSERT dans PHP/MySQL ?

Comment puis-je récupérer efficacement l'ID généré automatiquement après une INSERT dans PHP/MySQL ?

Mary-Kate Olsen
Libérer: 2024-12-07 22:20:18
original
739 Les gens l'ont consulté

How Can I Efficiently Retrieve the Auto-Generated ID After an INSERT in PHP/MySQL?

Récupération de l'ID d'une ligne insérée dans PHP/MySQL

L'une des tâches courantes lorsque l'on travaille avec des bases de données MySQL consiste à insérer une ligne et à récupérer ensuite sa ID généré automatiquement. Ce processus implique deux requêtes distinctes, introduisant potentiellement un intervalle de temps entre l'insertion de la ligne et la récupération de l'ID, ce qui peut conduire à des conditions de concurrence.

Heureusement, PHP fournit une solution simple à ce problème : la fonction mysqli_insert_id() . Le code suivant démontre son utilisation :

$link = mysqli_connect('127.0.0.1', 'my_user', 'my_pass', 'my_db');
mysqli_query($link, "INSERT INTO mytable (1, 2, 3, 'blah')");
$id = mysqli_insert_id($link);
Copier après la connexion

mysqli_insert_id() récupère directement l'ID généré par l'instruction INSERT la plus récente, éliminant ainsi le besoin de requêtes supplémentaires. Cette approche garantit que l'ID récupéré correspond à la ligne qui vient d'être insérée.

Une méthode alternative consiste à utiliser la fonction LAST_INSERT_ID() de MySQL dans une seule requête. En combinant plusieurs instructions INSERT, il devient possible de mettre à jour plusieurs tables simultanément et d'éviter les tracas liés à la récupération d'ID séparés :

mysqli_query($link, "INSERT INTO my_user_table ...; INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())");
Copier après la connexion

Il est crucial de noter que chaque connexion MySQL conserve sa propre séquence d'ID, évitant ainsi les conflits potentiels entre connexions simultanées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal