Maison >base de données >tutoriel mysql >Comment récupérer de manière fiable le dernier ID de ligne inséré dans MySQL pour les associations multi-tables ?

Comment récupérer de manière fiable le dernier ID de ligne inséré dans MySQL pour les associations multi-tables ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-17 04:29:25851parcourir

How to Reliably Retrieve the Last Inserted Row ID in MySQL for Multi-Table Associations?

Récupération de la dernière ligne insérée à associer à une autre table

Lors de l'insertion de données dans plusieurs tables, il est souvent nécessaire d'associer l'enregistrement inséré à un autre table en utilisant son ID. Dans de tels cas, récupérer l’ID de la dernière ligne insérée devient crucial. Cependant, utiliser $mysqli->insert_id directement peut conduire à des résultats incorrects.

Solution :

Pour récupérer correctement le dernier ID inséré, vous devez utiliser le mysqli_insert_id () fonction. Cette fonction fournit l'ID de la dernière ligne insérée dans la connexion actuelle à la base de données. Le code corrigé ci-dessous démontre son utilisation :

<br>$stmt = $mysqli->prepare("<br> INSERT INTO table1 (username, firstname, lastname, image) <br> SELECT ?,?,?,image FROM table2 t2 WHERE nom d'utilisateur = ?<br>");<br>$stmt->bind_param('ssss', $username, $fname, $lname, $username);<br>$stmt->execute();</p>
<p>$last_id = mysqli_insert_id($conn); // Récupère le dernier ID inséré</p>
<p>// Met à jour la colonne image dans la table1 en utilisant l'ID récupéré<br>$stmt2 = $mysqli->prepare("<br> UPDATE table1 SET image = ? WHERE id = ?<br>");<br>$stmt2->bind_param('si', $image, $last_id);<br>$stmt2->execute();<br>

Remarque : Assurez-vous que votre champ ID dans la table2 possède l'attribut AUTO_INCREMENT pour générer des valeurs d'ID uniques pour chaque 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