mysqli_insert_id avec relation de clé étrangère
Lorsque vous travaillez avec plusieurs tables impliquant des relations de clé étrangère, il est important d'associer correctement les données entre elles. Cet article aborde un problème de récupération du dernier identifiant inséré dans une table (table2) et de son utilisation pour insérer une ligne dans une autre table (table1).
Problème :
Le code tente de lier le dernier ID inséré de la table2 à une colonne d'image de la table1 en utilisant $image = $mysqli->insert_id. Cependant, cette approche échoue, empêchant la bonne association entre les tables.
Solution :
Pour résoudre ce problème, la première étape consiste à s'assurer que la colonne ID de la table2 est défini comme un champ à incrémentation automatique. Ensuite, utilisez mysqli_insert_id() pour récupérer le dernier ID inséré dans la table2. Voici le code modifié :
$last_id = mysqli_insert_id($mysqli); // Get last inserted ID from table2 $stmt = $mysqli->prepare(" INSERT INTO table1 (username, firstname, lastname, image) SELECT ?,?,?,image FROM table2 t2 WHERE username = ? AND t2.id = ? "); $stmt->bind_param('sssss', $username, $fname, $lname, $username, $last_id); $stmt->execute();
La fonction mysqli_insert_id() capture le dernier ID inséré de la table2 et le lie à la colonne image de la table1 à l'aide de $last_id. Cela garantit que l'image est correctement associée au prénom, au nom et au nom d'utilisateur dans la table1, préservant ainsi la relation de clé étrangère entre les deux tables.
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!