Lors de l'insertion d'une ligne dans une table MySQL où le champ « id » s'incrémente automatiquement, la récupération L'identifiant de la ligne insérée est une tâche courante. Bien qu'une approche consiste à insérer la ligne puis à rechercher la ligne correspondante, cela introduit une condition de concurrence potentielle.
Pour éviter ce problème, PHP fournit le mysqli_insert_id( ), qui récupère directement l'ID de la dernière ligne insérée pour une connexion MySQL donnée. Cette méthode garantit que l'ID est obtenu de manière fiable sans risque de conditions de concurrence critique ou de résultats en double.
<?php $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); ?>
Une autre méthode consiste à utiliser la fonction LAST_INSERT_ID() de MySQL, qui peut être utilisé dans une opération d’insertion multi-tables. Dans cette approche, la ligne est insérée dans plusieurs tables et la fonction LAST_INSERT_ID() garantit que l'« id » est propagé dans toutes les tables modifiées au sein de la même requête.
<?php mysqli_query($link, "INSERT INTO my_user_table ...; INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())"); ?>
Remarque : Chaque connexion MySQL maintient son propre suivi « id », évitant ainsi les conflits entre les différentes connexions.
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!