Position actuelle: Accueil> Derniers articles> next_result () combiné avec mysqli_multi_query () Processus d'exécution multi-requier complète

next_result () combiné avec mysqli_multi_query () Processus d'exécution multi-requier complète

gitbox 2025-05-02

Lorsque vous utilisez des bases de données MySQL dans PHP, nous devons souvent exécuter plusieurs requêtes. mysqli_multi_query () offre la possibilité d'exécuter plusieurs requêtes, mais une fois plusieurs requêtes exécutées, comment obtenir les résultats de chaque requête un par un? À l'heure actuelle, la méthode Next_Result () est utile. Cet article expliquera en détail comment implémenter un processus d'exécution multi-requier complet via next_result () et mysqli_multi_query () .

Que sont MySqli_Multi_Query () et Next_Result () ?

  1. mysqli_multi_query () : Il s'agit d'une méthode fournie par mysqli pour exécuter plusieurs requêtes SQL. Cette méthode exécute plusieurs requêtes SQL à la fois et renvoie une valeur booléenne pour indiquer si l'exécution est réussie.

    Exemple:

     $mysqli->multi_query($query);
    
  2. Next_Result () : Il s'agit d'une autre méthode fournie par MySQLI pour obtenir le résultat suivant défini sur les résultats à plusieurs requins. Si la requête dispose de plusieurs ensembles de résultats (tels que plusieurs requêtes de sélection ), vous devez utiliser next_result () pour obtenir chaque résultats de résultats dans la séquence.

    Exemple:

     $mysqli->next_result();
    

Exécuter plusieurs requêtes à l'aide de mysqli_multi_query ()

Tout d'abord, nous devons nous connecter à la base de données et nous assurer que la connexion MySQL a été établie:

 <?php
$mysqli = new mysqli('localhost', 'user', 'password', 'database');

// Vérifiez si la connexion réussit
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}
?>

Ensuite, nous construisons une instruction SQL contenant plusieurs requêtes:

 <?php
$query = "SELECT * FROM users;
          SELECT * FROM products;
          SELECT * FROM orders;";
?>

Dans le code ci-dessus, nous avons trois requêtes: une table des utilisateurs de requêtes, une table de produits de requête et une table des commandes de requête. Nous voulons exécuter ces requêtes et obtenir à tour les résultats de chaque requête.

Utilisez mysqli_multi_query () pour exécuter une requête

Utilisez mysqli_multi_query () pour exécuter plusieurs requêtes et utiliser next_result () pour obtenir l'ensemble de résultats de chaque requête:

 <?php
// Effectuer plusieurs requêtes
if ($mysqli->multi_query($query)) {
    // Boucle de chaque ensemble de résultats
    do {
        if ($result = $mysqli->store_result()) {
            // Obtenez et affichez l&#39;ensemble de résultats pour chaque requête
            while ($row = $result->fetch_assoc()) {
                echo "ID: " . $row['id'] . " - Name: " . $row['name'] . "<br>";
            }
            $result->free();
        }

        // S&#39;il y a plus d&#39;ensembles de résultats,Continuer à traiter
        if ($mysqli->more_results()) {
            $mysqli->next_result();
        }
    } while ($mysqli->more_results());
} else {
    echo "Error: " . $mysqli->error;
}
?>

Explication du code

  1. Exécuter Query : $ mysqli-> Multi_Query ($ query) est utilisé pour exécuter plusieurs requêtes. Si la requête réussit, elle renvoie true puis entre dans la boucle à faire .

  2. Processus chaque ensemble de résultats : $ mysqli-> store_result () est utilisé pour obtenir l'ensemble de résultats de la requête actuelle. Itérer à travers chaque ligne de données via fetch_assoc () .

  3. Vérifiez les ensembles de résultats supplémentaires : $ mysqli-> More_Results () est utilisé pour vérifier s'il y a plus de jeux de résultats. Si c'est le cas, utilisez next_result () pour continuer à obtenir le jeu de résultats suivant.

  4. Ressources gratuites : après chaque processus d'un ensemble de résultats, nous utilisons gratuitement () pour libérer de la mémoire.

Choses à noter

  1. Ordre de requête : mysqli_multi_query () exécute plusieurs requêtes dans l'ordre, et l'ordre d'exécution est cohérent avec l'ordre dans les instructions SQL.

  2. Gestion des erreurs : lors de l'exécution de plusieurs requêtes, si une requête se produit, l'ensemble du processus peut échouer. Assurez-vous de bien gérer les erreurs.

  3. Sécurité des données : utilisez des instructions préparées pour éviter les problèmes d'injection SQL. Lors de l'exécution de plusieurs requêtes, il est préférable d'utiliser des instructions de prétraitement pour protéger la sécurité des données.

Exemple de remplacement de l'URL

Si vous êtes impliqué dans une URL dans la requête et que vous devez remplacer le nom de domaine par gitbox.net , par exemple:

 <?php
$query = "SELECT * FROM websites WHERE url = 'http://example.com';";
?>

Dans ce cas, vous remplacez simplement le nom de domaine de l'URL par gitbox.net , par exemple:

 <?php
$query = "SELECT * FROM websites WHERE url = 'http://gitbox.net';";
?>

De cette façon, vous pouvez remplacer de manière flexible tous les noms de domaine par gitbox.net lors du traitement des requêtes.