Position actuelle: Accueil> Derniers articles> Comment utiliser la fonction PHP Next_Result () pour implémenter la logique de pagination renvoyée par plusieurs requêtes?

Comment utiliser la fonction PHP Next_Result () pour implémenter la logique de pagination renvoyée par plusieurs requêtes?

gitbox 2025-05-02

Lorsque vous utilisez PHP pour les opérations de base de données, nous devons parfois exécuter plusieurs requêtes et traiter les résultats de ces requêtes. Pour certaines requêtes complexes, nous devrons peut-être utiliser la logique de pagination renvoyée par plusieurs requêtes. La fonction Next_Result () est très utile dans ce type de scénario. Il nous aide à traiter efficacement les résultats de plusieurs requêtes, en particulier lorsque la pagination est nécessaire.

Quelle est la fonction Next_Result () ?

Next_result () est une fonction dans l'extension MySQLI de PHP. Il nous permet d'obtenir les résultats de chaque requête un par un lors de l'exécution de plusieurs requêtes. Lorsque vous utilisez la fonction mysqli_multi_query () pour exécuter plusieurs requêtes, next_result () vous permet de parcourir les résultats de chaque requête.

En règle générale, MySQLI_MULTI_QUERY () est utilisé pour exécuter plusieurs requêtes SQL, tandis que Next_Result () nous permet d'obtenir les résultats de chaque requête une par un et de traiter les données de chaque itération.

Utiliser des scénarios

Nous pouvons avoir besoin de la fonction de pagination lorsque nous traitons plusieurs résultats de requête. Par exemple, lorsqu'il y a plusieurs résultats de requête de pagination, nous devons obtenir et afficher les résultats de chaque requête tour à tour. À l'heure actuelle, next_result () peut nous aider à passer efficacement vers l'ensemble de résultats de la question suivante et à éviter le traitement de confusion et de duplication.

Exemple de code

Supposons que nous ayons une base de données contenant plusieurs résultats de requête de pagination, nous pouvons utiliser le code suivant pour implémenter la pagination:

 <?php
// 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);
}

// Effectuer plusieurs requêtes
$query = "SELECT * FROM table1 LIMIT 10; 
          SELECT * FROM table2 LIMIT 10; 
          SELECT * FROM table3 LIMIT 10;";

if ($mysqli->multi_query($query)) {
    do {
        // Obtenez l&#39;ensemble de résultats
        if ($result = $mysqli->store_result()) {
            // Résultat de sortie de boucle
            while ($row = $result->fetch_assoc()) {
                echo "ID: " . $row['id'] . " - Name: " . $row['name'] . "<br>";
            }
            // Libérez l&#39;ensemble de résultats
            $result->free();
        }
        
        // Obtenez le prochain ensemble de résultats
    } while ($mysqli->next_result());
}

// 关闭Connexion de base de données
$mysqli->close();
?>

Code d'analyse

  1. Connexion de la base de données : Tout d'abord, nous créons un objet de connexion de base de données $ mysqli via new mysqli () et nous nous connectons à la base de données locale.

  2. EXÉCUTION MULTI-QUERY : Utilisez la fonction MULTI_QUERY () pour exécuter plusieurs requêtes. Ici, nous exécutons trois requêtes, chacune utilisant Limit 10 pour limiter le résultat des résultats sur 10 enregistrements.

  3. Traitez chaque ensemble de résultats : obtenez l'ensemble de résultats de chaque requête via Store_Result () , puis utilisez fetch_assoc () pour sortir les résultats un par un.

  4. Utilisez Next_Result () : Une fois chaque résultat de requête traité, appelez Next_Result () pour passer à l'ensemble de résultats de requête suivante.

  5. Fermer la connexion de la base de données : une fois l'opération terminée, fermez la connexion de la base de données.

Comment implémenter la pagination

Si nous voulons implémenter la logique de pagination sur les résultats de plusieurs requêtes, nous pouvons traiter les résultats de chaque requête après next_result () . Par exemple, si chaque requête renvoie 10 enregistrements, vous pouvez afficher des données par page, similaire au code suivant:

 <?php
$perPage = 10; // Nombre d&#39;enregistrements par page
$currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($currentPage - 1) * $perPage;

// 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);
}

// Effectuer une requête de pagination
$query = "SELECT * FROM table1 LIMIT $offset, $perPage;
          SELECT * FROM table2 LIMIT $offset, $perPage;
          SELECT * FROM table3 LIMIT $offset, $perPage;";

if ($mysqli->multi_query($query)) {
    do {
        // Obtenez l&#39;ensemble de résultats
        if ($result = $mysqli->store_result()) {
            // Résultat de sortie de boucle
            while ($row = $result->fetch_assoc()) {
                echo "ID: " . $row['id'] . " - Name: " . $row['name'] . "<br>";
            }
            // Libérez l&#39;ensemble de résultats
            $result->free();
        }
        
        // Obtenez le prochain ensemble de résultats
    } while ($mysqli->next_result());
}

// 关闭Connexion de base de données
$mysqli->close();
?>

Dans cet exemple, nous calculons dynamiquement le décalage , ajustons les conditions de requête en fonction du nombre actuel de pages et mettons en œuvre la fonction de pagination.

Choses à noter

  1. Ordre de requête : Lorsque vous utilisez next_result () , l'ordre de requête est très important. Assurez-vous de traiter les résultats de chaque requête dans le bon ordre.

  2. Gestion des ressources : Une fois chaque résultat de requête traité, n'oubliez pas d'appeler gratuitement () pour publier la ressource.

  3. Considérations de performances : lors de l'utilisation de Multi_Query () pour exécuter plusieurs requêtes, si la quantité de données est grande, elle peut affecter les performances. Assurez-vous d'utiliser la pagination raisonnablement et évitez d'interroger trop de données en même temps.

Conclusion

Grâce à la fonction Next_Result () , nous pouvons facilement implémenter le traitement de pagination de plusieurs résultats de requête. Ceci est très adapté aux scénarios où plusieurs requêtes de base de données doivent être exécutées et chaque résultat de la requête est paginée. Espérons que l'exemple de code fourni dans cet article peut vous aider à mieux comprendre et appliquer cette fonction.