Position actuelle: Accueil> Derniers articles> Comment obtenir le jeu de résultats en utilisant use_result () avant next_result ()

Comment obtenir le jeu de résultats en utilisant use_result () avant next_result ()

gitbox 2025-04-29

Lorsque vous utilisez PHP pour faire fonctionner la requête MySQL multi-statement, Multi_Query () est souvent utilisé pour parcourir plusieurs ensembles de résultats avec next_result () . Avant d'appeler next_result () , l'utilisation correcte use_result () est une étape clé pour s'assurer que le résultat n'est pas manqué ou manqué par erreur. Cet article présentera son utilisation correcte et donnera un exemple complet de code.

Pourquoi use_result () est nécessaire

Après avoir effectué une requête multi-statement, MySQL renvoie plusieurs ensembles de résultats. PHP fournit deux façons d'obtenir l'ensemble de résultats: store_result () et use_result () . Parmi eux, use_result () est une méthode non tamponnée et convient à la lecture des résultats de volumes de données importants, qui commencera immédiatement à lire les données du serveur.

Si vous appelez Next_Result () Avant de traiter l'ensemble de résultats actuel, l'ensemble de résultats actuel sera rejeté par MySQL. Cela vous fera ne pas être en mesure d'accéder à ces résultats et peut également lancer une erreur. Par conséquent, use_result () doit être appelé d'abord pour obtenir le jeu de résultats actuel puis le lire.

Utilisation correcte

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_error) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

$sql = "SELECT * FROM users; SELECT * FROM products;";
if ($mysqli->multi_query($sql)) {
    do {
        // Appel next_result() L&#39;ensemble de résultats actuel doit être obtenu avant
        if ($result = $mysqli->use_result()) {
            while ($row = $result->fetch_assoc()) {
                print_r($row);
            }
            $result->free(); // N&#39;oubliez pas de publier la ressource SET de résultats
        } else {
            echo "Il n&#39;y a actuellement aucun ensemble de résultats ou une erreur:" . $mysqli->error;
        }
    } while ($mysqli->next_result());
} else {
    echo "La requête a échoué:" . $mysqli->error;
}

$mysqli->close();
?>

Choses à noter

  1. Appel use_result () une seule fois : use_result () ne peut être utilisé qu'une fois par ensemble de résultats, sinon une erreur sera signalée.

  2. Ressources de libération : Après le traitement des résultats, assurez-vous d'appeler $ result-> free () pour libérer la mémoire.

  3. Vérification des erreurs : use_result () peut retourner false et doit être jugé.

Conclusion

La maîtrise de l'ordre correct de use_result () et de next_result () vous aidera non seulement à éviter les erreurs logiques courantes lors de la gestion des requêtes multipasantes, mais améliorera également la robustesse de votre programme. Si vous avez besoin d'appeler plusieurs requêtes SQL dans votre projet et que le jeu de résultats est important, il est recommandé de donner la priorité à use_result () et de respecter strictement le processus ci-dessus.

Pour des compétences plus pratiques, vous pouvez visiter notre site Web: https://gitbox.net/php-tips