Requêtes mysqli multiples : exécution simultanée d'instructions INSERT
Problème d'origine :
Tentatives d'exécution deux instructions INSERT utilisant mysqli_query() consécutivement entraînent l'échec de la deuxième requête. Ce problème provient des mesures de sécurité de MySQL, qui empêchent l'exécution de plusieurs requêtes en un seul appel.
Solution : mysqli_multi_query()
Pour exécuter plusieurs requêtes en un seul appel, il faut utiliser la fonction mysqli_multi_query() function :
$query = "INSERT INTO images (project_id, user_id, image_name, date_created, link_to_file, link_to_thumbnail, given_name) VALUES ('$project_id', '$user_id', '$image_name', '$date_created', '$link_to_file', '$thumbnail', '$ImageName');"; $query .= "INSERT INTO images_history (project_id, user_id, image_name, date_created, link_to_file, link_to_thumbnail, given_name, day, month, year) VALUES ('$project_id', '$user_id', '$image_name', '$date_created', '$link_to_file', '$thumbnail', '$ImageName', '$day', '$month', '$year');"; $result = mysqli_multi_query($mysqli, $query);
Traitement des résultats de la requête
L'exécution de mysqli_multi_query() renvoie une valeur booléenne. Cependant, il est crucial de récupérer manuellement les résultats de chaque requête à l'aide de mysqli_store_result() et de les parcourir en utilisant mysqli_more_results() et mysqli_next_result() :
while (mysqli_more_results($mysqli) && mysqli_next_result($mysqli)) { if (($result = mysqli_store_result($mysqli)) === false && mysqli_error($mysqli) != '') { echo "Query failed: " . mysqli_error($mysqli); } }
Avantages de mysqli_multi_query()
Considérations supplémentaires
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!