OUJOOD.COM
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.