Maison >développement back-end >tutoriel php >Comment puis-je exécuter plusieurs requêtes MySQLi simultanément en PHP ?

Comment puis-je exécuter plusieurs requêtes MySQLi simultanément en PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-08 02:41:14404parcourir

How Can I Execute Multiple MySQLi Queries Simultaneously in PHP?

Requêtes mysqli multiples : comprendre mysqli_multi_query()

Avec MySQLi, exécuter plusieurs requêtes dans une seule requête n'est pas simple. Les tentatives d'exécution d'appels mysqli_query() séparés entraîneront l'exécution de la première requête uniquement. Pour surmonter cette limitation, mysqli_multi_query() fournit une solution permettant d'exécuter plusieurs instructions SQL en une seule fois.

Exemple de mise en œuvre :

Considérez le scénario suivant :

mysqli_query($dblink, "INSERT INTO images ...");
mysqli_query($dblink, "INSERT INTO images_history ...");

Pour exécuter les deux requêtes simultanément, utilisez mysqli_multi_query() :

$mysqli = new mysqli(...);
$query = "INSERT INTO images ...";
$query .= "INSERT INTO images_history ...";

$result = mysqli_multi_query($mysqli, $query);

if ($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);
        }
    }
} else {
    echo "First query failed..." . mysqli_error($mysqli);
}

Considérations clés :

  • mysqli_multi_query() nécessite une chaîne contenant toutes les requêtes séparées par des points-virgules (;).
  • mysqli_store_result() doit être utilisé pour récupérer les résultats de chaque requête. Étant donné que les requêtes INSERT ne renvoient pas de jeux de résultats, recherchez dans mysqli_error() une chaîne vide pour confirmer que l'insertion a réussi.
  • Cette approche est sécurisée car elle empêche les injections SQL présentes lors de l'exécution de plusieurs appels mysqli_query().

Supplémentaire Ressources :

  • [mysqli_multi_query](https://www.php.net/manual/en/mysqli.multi-query.php)
  • [mysqli_more_results]( https://www.php.net/manual/en/mysqli.more-results .php)
  • [mysqli_next_result](https://www.php.net/manual/en/mysqli.next-result.php)
  • [mysqli_store_result](https://www .php.net/manual/en/mysqli.store-result.php)

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