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;")
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" } }
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));
Cela renverra les résultats de la deuxième requête :
array(1) { [0] => array(1) { [2] => string(1) "2" } }
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
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!