web-dev-qa-db-fra.com

Erreur fatale: appel à la méthode non définie mysqli_result :: fetch_all ()

J'ai des problèmes avec PHP dans Ubuntu 10.04. Lorsque j'essaie d'utiliser mysqli_result :: fetch_all, cette erreur apparaît:

Appel à la méthode non définie mysqli_result :: fetch_all ()

Cependant, cela fonctionne sous Windows XP.

Le code:

$result = $this->dbh->query('SELECT [...] ');
return $result->fetch_all(MYSQLI_ASSOC);

Je ne veux pas utiliser fetch_assoc avec une boucle car j'envoie le résultat à une autre couche pour traitement.

J'utilise PHP 5.4.4. Et avec php -m | grep mysql le module mysqlnd il n'apparaît pas. Comment puis-je l'installer? être le problème?

20
Stokres

mysqli_result :: fetch_all () nécessite le pilote natif MySQL (mysqlnd).

il est probable que vous le manquiez.

jetez un oeil à ces messages, qui pourraient vous aider.

mysqli fetch_all () n'est pas une fonction valide?

37
Ibrahim Azhar Armar

fetch_all consomme plus de mémoire que fetch_array () et a d'autres effets secondaires néfastes, donc fetch_array/fetch_assoc sont préférés.

Détaillé de PHP:

Disponible uniquement avec mysqlnd.

Comme mysqli_fetch_all () renvoie toutes les lignes sous forme de tableau en une seule étape, il peut consommer plus de mémoire que certaines fonctions similaires telles que mysqli_fetch_array (), qui ne renvoie qu'une ligne à la fois à partir du jeu de résultats. De plus, si vous devez parcourir le jeu de résultats, vous aurez besoin d'une construction en boucle qui aura un impact supplémentaire sur les performances. Pour ces raisons, mysqli_fetch_all () ne doit être utilisé que dans les situations où le jeu de résultats récupéré sera envoyé à une autre couche pour traitement.

Si vous voulez vraiment l'utiliser, vous devez installer mySQL avec un lecteur natif (mysqlnd) Exemple d'installation:

./configure --with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \

Sur Ubuntu, vous pouvez simplement faire

Sudo apt-get install php5-mysqlnd
5
wonton

http://www.php.net/manual/en/mysqli-result.fetch-all.php

Disponible uniquement avec mysqlnd.

Remarques sur l'activation de mysqlnd: http://www.php.net/manual/en/mysqlnd.install.php

2
Timur