Maison > base de données > tutoriel mysql > Comment récupérer efficacement l'ID d'auto-incrémentation après une INSERT en PHP/MySQL ?

Comment récupérer efficacement l'ID d'auto-incrémentation après une INSERT en PHP/MySQL ?

Barbara Streisand
Libérer: 2025-01-05 02:14:46
original
294 Les gens l'ont consulté

How to Efficiently Retrieve the Auto-Increment ID After an INSERT in PHP/MySQL?

Insérer une ligne et récupérer son « id » dans PHP/MySQL

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.

Solution : Utilisation de mysqli_insert_id()

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);
?>
Copier après la connexion

Solution alternative : LAST_INSERT_ID()

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())");
?>
Copier après la connexion

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!

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