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 ?
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!