Maison >développement back-end >tutoriel php >Comment récupérer l'ID d'une ligne nouvellement insérée dans PHP/MySQL ?

Comment récupérer l'ID d'une ligne nouvellement insérée dans PHP/MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-04 20:05:19818parcourir

How to Retrieve the ID of a Newly Inserted Row in PHP/MySQL?

Récupérer l'ID d'une ligne insérée en PHP/MySQL

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.

Éviter les conditions de concurrence

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.

Utilisation de mysqli_insert_id()

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);

Plusieurs requêtes en une seule opération

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!

Déclaration:
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