Maison > développement back-end > tutoriel php > Comment puis-je exécuter plusieurs instructions INSERT simultanément dans MySQL à l'aide de mysqli ?

Comment puis-je exécuter plusieurs instructions INSERT simultanément dans MySQL à l'aide de mysqli ?

Barbara Streisand
Libérer: 2024-12-07 19:50:14
original
597 Les gens l'ont consulté

How Can I Execute Multiple INSERT Statements Simultaneously in MySQL Using mysqli?

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

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

Avantages de mysqli_multi_query()

  • Exécute efficacement plusieurs requêtes en une seule call.
  • Maintient l'intégrité de la base de données en empêchant les interférences dans les requêtes.

Considérations supplémentaires

  • mysqli_store_result() peut renvoyer FALSE pour les requêtes sans résultats (par exemple, instructions INSERT). Utilisez mysqli_error() pour confirmer le succès.
  • Reportez-vous à la documentation de mysqli_multi_query(), mysqli_more_results(), mysqli_next_result() et mysqli_store_result() pour plus de détails.

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