Mysql
 sql >> Base de données >  >> RDS >> Mysql

PDOStatement ::nextRowSet() est cassé dans MySQL 5.6.16 sous Windows

J'ai eu le même problème avec PDO::nextRowset(), car il renvoie true même s'il n'y a plus d'ensembles de lignes disponibles, donc lors de l'appel de fetchAll(), il lève l'exception HY000. (testé sur PHP 5.5.12 windows, Mysql 5.5.17 linux)

Une solution de contournement à ce problème consiste à vérifier le nombre de colonnes avec la méthode PDO::columnCount() avant de récupérer l'ensemble de lignes. S'il n'est pas nul, vous avez un jeu de lignes valide et vous pouvez donc appeler PDO::fetchAll().

Même si PDO::nextRowset() renvoie vrai, columnCount() signalera le nombre de colonnes avant de passer au jeu de lignes suivant.

Exemple :

while ($objQuery->columnCount()) {
    $tab[] = $objQuery->fetchAll(\PDO::FETCH_ASSOC);
    $objQuery->nextRowset();
}