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);
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())");
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!