Position actuelle: Accueil> Derniers articles> Next_result () et mysqli_fetch_assoc () gérer en collaboration plusieurs ensembles de résultats

Next_result () et mysqli_fetch_assoc () gérer en collaboration plusieurs ensembles de résultats

gitbox 2025-04-29

Lorsque vous utilisez MySQL, nous exécuterons parfois plusieurs requêtes SQL pour obtenir plusieurs ensembles de résultats à la fois. Dans PHP, si vous utilisez l'extension MySQLI , vous pouvez utiliser la méthode Multi_Query () pour exécuter plusieurs requêtes à la fois, puis traiter ces résultats un par un via next_result () et mysqli_fetch_assoc () .

Ci-dessous, nous démontrerons ce processus à travers des exemples.

Exemple de scène

Supposons que nous ayons une base de données avec deux tables: les utilisateurs et les commandes . Nous voulons interroger le contenu dans les deux tables en même temps.

 <?php
// Créer une connexion de base de données
$mysqli = new mysqli("localhost", "username", "password", "database");

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

// Construire plusieurs lignesSQLDéclaration
$sql = "SELECT id, name FROM users;";
$sql .= "SELECT id, user_id, total FROM orders;";

// utilisermulti_query()执行多条Déclaration
if ($mysqli->multi_query($sql)) {
    do {
        // utiliserstore_result()Obtenez l&#39;ensemble de résultats actuel
        if ($result = $mysqli->store_result()) {
            // Itérer à travers l&#39;ensemble de résultats actuel
            while ($row = $result->fetch_assoc()) {
                print_r($row);
            }
            $result->free(); // Libérez la ressource de jeu de résultats actuel
        }

        // S&#39;il y a un prochain ensemble de résultats,Continuer
    } while ($mysqli->more_results() && $mysqli->next_result());
} else {
    echo "Erreur de requête: " . $mysqli->error;
}

// Fermez la connexion de la base de données
$mysqli->close();
?>

Interprétation des fonctions clés

multi_query ()

Cette fonction vous permet d'exécuter plusieurs instructions SQL dans une seule demande. Ceci est très utile dans l'exécution par lots des requêtes et la réduction du nombre de demandes.

store_result ()

Cette fonction est utilisée pour obtenir le jeu de résultats actuel et le lire ligne par ligne avec fetch_assoc () .

fetch_assoc ()

Renvoie une ligne dans l'ensemble de résultats en tant que tableau associatif, adapté à l'extraction de données dans une boucle.

Next_result ()

Cette fonction est utilisée pour préparer le jeu de résultats suivant. Après le traitement de l'ensemble de résultats actuel, il doit être appelé pour entrer le jeu de résultats suivant.

Recommandations pour une utilisation

  • Chaque fois qu'un ensemble de résultats est traité, assurez-vous d'utiliser Free () pour libérer la ressource.

  • Soyez prudent pour éviter les problèmes d'injection SQL. Si l'instruction de requête implique l'entrée de l'utilisateur, assurez-vous d'utiliser des instructions de prétraitement.

  • Vérifiez More_Results () pour vous assurer qu'il y a plus de jeux de résultats à traiter.

Scénarios pratiques

Vous pouvez utiliser Multi_query () + next_result () dans certains scénarios:

  • Rapport backend Requête plusieurs tables

  • Exécuter les procédures stockées pour renvoyer plusieurs ensembles de résultats

  • Optimiser les performances et réduire les interactions de base de données

résumé

En combinant Multi_Query () avec next_result () et mysqli_fetch_assoc () , nous pouvons gérer gracieusement plusieurs ensembles de résultats, améliorer l'efficacité du programme et la simplicité du code.

Comme indiqué ci-dessus, que vous développiez des applications d'entreprise ou que vous créiez vos propres services, la maîtrise de l'utilisation de ces fonctions vous aidera à utiliser la base de données plus efficacement.

Si vous voulez en savoir plus sur le contenu, veuillez visiter: https://gitbox.net pour des tutoriels et des matériaux plus pratiques.