Aller au contenu

next_result

Dans cet article, nous nous concentrerons sur la fonction mysqli_next_result() de PHP, qui permet de passer au jeu de résultats suivant après l'exécution de plusieurs requêtes avec mysqli_multi_query().

Introduction à la fonction mysqli_next_result()

La fonction mysqli_next_result() est une fonction intégrée à PHP qui déplace le pointeur de résultat vers le jeu de résultats suivant lorsque plusieurs requêtes sont exécutées via mysqli_multi_query(). Elle renvoie une valeur booléenne indiquant le succès ou l'échec.

Comment utiliser la fonction mysqli_next_result()

Pour utiliser mysqli_next_result(), exécutez vos requêtes avec mysqli_multi_query(), puis parcourez les résultats. Il est recommandé de vérifier mysqli_more_results() avant d'appeler mysqli_next_result() afin d'éviter les avertissements liés aux requêtes ne renvoyant pas de résultats (par exemple, INSERT ou UPDATE). Voici un exemple :

Comment utiliser la fonction mysqli_next_result() ?

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

if (!$mysqli) {
    die("Connection failed: " . mysqli_connect_error());
}

$query = "SELECT * FROM table1; SELECT * FROM table2; SELECT * FROM table3;";

if (mysqli_multi_query($mysqli, $query)) {
    do {
        /* process current result set */
        if ($result = mysqli_store_result($mysqli)) {
            // process result set
            mysqli_free_result($result);
        }
    } while (mysqli_more_results($mysqli) && mysqli_next_result($mysqli));
} else {
    echo "Multi-query failed: " . mysqli_error($mysqli);
}

mysqli_close($mysqli);
?>

Dans cet exemple, nous établissons une connexion avec gestion des erreurs, puis exécutons plusieurs requêtes à l'aide de mysqli_multi_query(). La boucle do...while vérifie mysqli_more_results() pour avancer en toute sécurité dans chaque jeu de résultats grâce à mysqli_next_result(), ce qui évite les avertissements liés aux requêtes sans résultat. mysqli_store_result() est utilisé ici pour charger le jeu de résultats en mémoire, mais il est optionnel ; pour de grands ensembles de données, mysqli_use_result() ou la récupération directe peut être plus économe en mémoire. Enfin, nous fermons la connexion avec mysqli_close().

Conclusion

En conclusion, la fonction mysqli_next_result() est un outil utile pour passer au jeu de résultats suivant lors du traitement de plusieurs requêtes avec mysqli_multi_query(). En comprenant comment utiliser cette fonction conjointement avec mysqli_more_results(), vous pouvez exécuter et traiter efficacement plusieurs requêtes avec l'extension MySQLi de PHP.

Pratique

Que fait la fonction PHP mysqli::next_result ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.