Maison > base de données > tutoriel mysql > Comment récupérer plusieurs ensembles de résultats à partir d'une seule requête PDO ?

Comment récupérer plusieurs ensembles de résultats à partir d'une seule requête PDO ?

Patricia Arquette
Libérer: 2024-11-17 12:06:02
original
935 Les gens l'ont consulté

How to Retrieve Multiple Result Sets from a Single PDO Query?

Requêtes multiples PDO : récupération de plusieurs ensembles de résultats

PHP 5.3 a introduit la prise en charge de plusieurs requêtes dans le pilote PDO_MYSQLND, vous permettant d'exécuter plusieurs SELECT requêtes en un seul appel. Cependant, récupérer les ensembles de résultats de ces requêtes peut prêter à confusion.

Considérez la requête suivante :

$db->query("SELECT 1; SELECT 2;")
Copier après la connexion

Cette requête exécute deux requêtes SELECT. La méthode fetchAll(PDO::FETCH_ASSOC) est ensuite utilisée pour récupérer le jeu de résultats. Cependant, cela ne renvoie que les résultats de la première requête :

array(1) {
  [0] =>
  array(1) {
    [1] =>
    string(1) "1"
  }
}
Copier après la connexion

Utilisation de PDOStatement::nextRowset

Pour récupérer les résultats de la deuxième requête, vous devez utilisez la méthode PDOStatement::nextRowset. Cette méthode vous permet de déplacer le curseur d'instruction vers l'ensemble de résultats suivant :

$stmt = $db->query("SELECT 1; SELECT 2;");
$stmt->nextRowset();
var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
Copier après la connexion

Cela renverra les résultats de la deuxième requête :

array(1) {
  [0] =>
  array(1) {
    [2] =>
    string(1) "2"
  }
}
Copier après la connexion

Styles FETCH multiples

L'avantage d'utiliser PDOStatement::nextRowset est qu'il vous permet de récupérer chaque requête en utilisant différents styles FETCH. Par exemple :

$stmt = $db->query("SELECT 1; SELECT 'a';");
$stmt->nextRowset();
$first = $stmt->fetchColumn(); // fetch first column of second query
$stmt->nextRowset();
$second = $stmt->fetch(PDO::FETCH_ASSOC); // fetch associative array of third query
Copier après la connexion

Cela vous offre une plus grande flexibilité lorsque vous travaillez avec plusieurs requêtes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal