Maison  >  Article  >  base de données  >  Comment puis-je récupérer plusieurs ensembles de résultats à partir d’une seule requête MySQL PDO ?

Comment puis-je récupérer plusieurs ensembles de résultats à partir d’une seule requête MySQL PDO ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-18 09:47:02782parcourir

How Can I Retrieve Multiple Result Sets from a Single PDO MySQL Query?

Récupération de plusieurs ensembles de résultats à partir de requêtes multiples PDO

Le pilote PDO_MYSQLND a introduit la prise en charge de plusieurs requêtes dans PHP version 5.3. Cela permet aux utilisateurs d'exécuter plusieurs requêtes SQL à la fois. Cependant, récupérer tous les ensembles de résultats de ces requêtes peut être difficile.

Énoncé du problème

La requête « SELECT 1 ; SELECT 2 ; » exécutera les deux requêtes, mais seul le jeu de résultats de la première requête est renvoyé. Le deuxième ensemble de résultats semble être ignoré.

Solution

Pour récupérer plusieurs ensembles de résultats, la méthode PDOStatement::nextRowset doit être utilisée. Cette méthode avance le curseur au début de l’ensemble de lignes suivant. En appelant nextRowset après la première requête, les utilisateurs peuvent accéder à l'ensemble de résultats de la deuxième requête.

$stmt = $db->query("SELECT 1; SELECT 2;");
$stmt->nextRowset();
var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));

Cela renverra l'ensemble de résultats de la deuxième requête.

Avantages et Inconvénients

Cette implémentation permet de récupérer le résultat de chaque requête en utilisant différents styles FETCH. Cependant, cela peut être plus complexe qu’une implémentation qui renvoie simplement tous les jeux de résultats sous un seul tableau. Néanmoins, la capacité de gérer plusieurs résultats de manière flexible peut être précieuse dans certains scénarios.

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!

Déclaration:
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