oujood.com

Comment utiliser la fonction more_results() pour traiter plusieurs ensembles de résultats en PHP

La fonction more_results() permet de vérifier si un ou plusieurs ensembles de résultats sont disponibles après un appel à mysqli_multi_query().

Définition et utilisationLa fonction PHP more_results() / mysqli_more_results()

PHP Version: 5+

La fonction PHP more_results() (ou mysqli_more_results() dans la syntaxe procédurale) permet de vérifier si un ou plusieurs ensembles de résultats sont disponibles à partir d'un appel précédent à la fonction mysqli_multi_query().

La fonction more_results() prend un seul paramètre, un objet ou une connexion mysqli. Elle retourne true si un ou plusieurs ensembles de résultats sont disponibles, false sinon.

Syntaxe orientée objet

$mysqli = new mysqli('localhost', 'root', '', 'my_db');

if ($mysqli->multi_query("SELECT * FROM users; SELECT * FROM posts;")) {
    while ($mysqli->more_results()) {
        $mysqli->next_result();

        if ($mysqli->store_result()) {
            // Traiter l'ensemble de résultats actuel
        } else {
            // Traiter l'erreur
        }
    }
}
    

Syntaxe procédurale

$mysqli = mysqli_connect('localhost', 'root', '', 'my_db');

if (mysqli_multi_query($mysqli, "SELECT * FROM users; SELECT * FROM posts;")) {
    do {
        if (mysqli_more_results($mysqli)) {
            mysqli_next_result($mysqli);

            if (mysqli_store_result($mysqli)) {
                // Traiter l'ensemble de résultats actuel
            } else {
                // Traiter l'erreur
            }
        }
    } while (mysqli_more_results($mysqli));
}
    

Valeurs possibles et paramètres

La fonction more_results() retourne les valeurs suivantes :

  • true si un ou plusieurs ensembles de résultats sont disponibles
  • false si aucun ensemble de résultats n'est disponible

Le paramètre de la fonction more_results() est un objet ou une connexion mysqli.

Exemples pratiques

Voici quelques exemples pratiques d'utilisation de la fonction more_results() :

Vérifier si un ensemble de résultats est disponible

Exemple :       Copier le code

\n<?php\n
$mysqli = new mysqli('localhost', 'root', '', 'my_db');

if ($mysqli->multi_query("SELECT * FROM users;")) {
    if ($mysqli->more_results()) {
        // Un ensemble de résultats est disponible
    } else {
        // Aucun ensemble de résultats n'est disponible
    }
}
    ?>
	

Traiter tous les ensembles de résultats

Exemple :       Copier le code

\n<?php\n
$mysqli = new mysqli('localhost', 'root', '', 'my_db');

if ($mysqli->multi_query("SELECT * FROM users; SELECT * FROM posts;")) {
    while ($mysqli->more_results()) {
        $mysqli->next_result();

        if ($mysqli->store_result()) {
            // Traiter l'ensemble de résultats actuel
        } else {
            // Traiter l'erreur
        }
    }
}
    ?>
	

Traiter un ensemble de résultats spécifique

Exemple :       Copier le code

\n<?php\n
$mysqli = new mysqli('localhost', 'root', '', 'my_db');

if ($mysqli->multi_query("SELECT * FROM users; SELECT * FROM posts;")) {
    // Traiter l'ensemble de résultats des utilisateurs

    $mysqli->next_result();

    if ($mysqli->store_result()) {
        // Traiter l'ensemble de résultats
    } else {
        // Traiter l'erreur
    }

    // Traiter l'ensemble de résultats des publications

    $mysqli->next_result();

    if ($mysqli->store_result()) {
        // Traiter l'ensemble de résultats
    } else {
        // Traiter l'erreur
    }
}
    ?>
	

Exemples de cas d'utilisation pratique de la fonction more_results()

Voici quelques cas d'utilisation de la fonction more_results(), avec des exemples dans les deux approches, orientée objet et procédurale :

Cas 1 : Vérification d'un ensemble de résultats

Ce cas d'utilisation consiste à vérifier si un ensemble de résultats est disponible après un appel à mysqli_multi_query().

Exemple orienté objet

Exemple :       Copier le code

<?php

$mysqli = new mysqli('localhost', 'root', '', 'my_db');

$mysqli->multi_query("SELECT * FROM users;");

if ($mysqli->more_results()) {
    // Un ensemble de résultats est disponible
} else {
    // Aucun ensemble de résultats n'est disponible
}
    ?>

Exemple procédural

Exemple :       Copier le code

<?php

$mysqli = mysqli_connect('localhost', 'root', '', 'my_db');

if (mysqli_multi_query($mysqli, "SELECT * FROM users;")) {
    if (mysqli_more_results($mysqli)) {
        // Un ensemble de résultats est disponible
    } else {
        // Aucun ensemble de résultats n'est disponible
    }
}
    ?>

Cas 2 : Traitement de tous les ensembles de résultats

Ce cas d'utilisation consiste à traiter tous les ensembles de résultats disponibles après un appel à mysqli_multi_query().

Exemple orienté objet

Exemple :       Copier le code

<?php

$mysqli = new mysqli('localhost', 'root', '', 'my_db');

$mysqli->multi_query("SELECT * FROM users; SELECT * FROM posts;");

while ($mysqli->more_results()) {
    $mysqli->next_result();

    if ($mysqli->store_result()) {
        // Traiter l'ensemble de résultats actuel
    } else {
        // Traiter l'erreur
    }
}
    ?>

Exemple procédural

Exemple :       Copier le code

<?php

$mysqli = mysqli_connect('localhost', 'root', '', 'my_db');

if (mysqli_multi_query($mysqli, "SELECT * FROM users; SELECT * FROM posts;")) {
    do {
        if (mysqli_more_results($mysqli)) {
            mysqli_next_result($mysqli);

            if (mysqli_store_result($mysqli)) {
                // Traiter l'ensemble de résultats actuel
            } else {
                // Traiter l'erreur
            }
        }
    } while (mysqli_more_results($mysqli));
}
    ?>

Cas 3 : Traitement d'un ensemble de résultats spécifique

Ce cas d'utilisation consiste à traiter un ensemble de résultats spécifique après un appel à mysqli_multi_query().

Exemple orienté objet

Exemple :       Copier le code

<?php

$mysqli = new mysqli('localhost', 'root', '', 'my_db');

$mysqli->multi_query("SELECT * FROM users; SELECT * FROM posts;");

// Traiter l'ensemble de résultats des utilisateurs

$mysqli->next_result();

if ($mysqli->store_result()) {
    // Traiter l'ensemble de résultats
} else {
    // Traiter l'erreur
}

// Traiter l'ensemble de résultats des publications

$mysqli->next_result();

if ($mysqli->store_result()) {
    // Traiter l'ensemble de résultats
} else {
    // Traiter l'erreur
}
    ?>

Exemple procédural

Exemple :       Copier le code

<?php

$mysqli = mysqli_connect('localhost', 'root', '', 'my_db');

if (mysqli_multi_query($mysqli, "SELECT * FROM users; SELECT * FROM posts;")) {
    // Traiter l'ensemble de résultats des utilisateurs

    mysqli_next_result($mysqli);

    if (mysqli_store_result($mysqli)) {
        // Traiter l'ensemble de résultats
    } else {
        // Traiter l'erreur
    }

    // Traiter l'ensemble de résultats des publications

    mysqli_next_result($mysqli);

    if (mysqli_store_result($mysqli)) {
        // Traiter l'ensemble de résultats
    } else {
        // Traiter l'erreur
    }
}
    ?>

Astuces et conseils

  • La fonction more_results() doit être utilisée après un appel à la fonction mysqli_multi_query().
  • Il est important de vérifier si un ensemble de résultats est disponible avant de l'utiliser.
  • La fonction mysqli_next_result() permet de passer à l'ensemble de résultats suivant.

Voir aussi nos tutoriel :

Détermine si une variable est de type chaîne de caractères">is_string

 Détermine si une variable est de type chaîne de caractères

Balise em

Définit le texte souligné 

fonction strtoupper, strtoupper

Renvoie une chaîne en majuscules