Lors de l'insertion d'une ligne dans une table MySQL avec un champ id auto-incrémenté, il est essentiel de récupérer l'identifiant identifiant nouvellement généré pour les opérations ultérieures.
Une approche pour obtenir l'identifiant consiste à interroger la base de données pour la ligne qui correspond aux informations insérées. Cependant, cette méthode introduit une condition de concurrence critique dans laquelle une autre ligne pourrait être insérée avant l'exécution de la requête, ce qui entraînerait des résultats inexacts.
Une solution fiable consiste à utiliser LAST_INSERT_ID( ) fonction. La méthode mysqli_insert_id() en PHP renvoie le dernier identifiant généré pour la connexion actuelle.
$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 approche alternative consiste à exécuter plusieurs requêtes en une seule opération, profitant de la méthode LAST_INSERT_ID() de MySQL. Cela garantit que l'identifiant est correctement attribué même lorsque plusieurs tables sont impliquées.
mysqli_query($link, "INSERT INTO my_user_table ...; INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())");
Cette méthode élimine le besoin de s'inquiéter des conditions de concurrence et fournit un moyen fiable de récupérer l'identifiant de la ligne insérée.
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!