php - mysqli_stmt - uncaught error call to undefined method mysqli_result:: fetch() in
Error grave: llamada a un método no definido mysqli_result:: fetch_all() (3)
Tengo problemas con PHP en Ubuntu 10.04. Cuando intento usar mysqli_result :: fetch_all aparece este error:
Llamada al método no definido mysqli_result :: fetch_all ()
Sin embargo, funciona en Windows XP.
El código:
$result = $this->dbh->query(''SELECT [...] '');
return $result->fetch_all(MYSQLI_ASSOC);
No quiero usar fetch_assoc con un bucle porque envío el resultado a otra capa para su procesamiento.
Estoy usando PHP 5.4.4. y con php -m | grep mysql el módulo mysqlnd no aparece. ¿Cómo puedo instalarlo? ¿Podría ser el problema?
mysqli_result :: fetch_all () requiere el controlador nativo de MySQL (mysqlnd).
lo más probable es que te lo estés perdiendo.
Echa un vistazo a estos mensajes, que podrían ayudarte.
fetch_all consume más memoria que fetch_array () y tiene otros efectos secundarios perjudiciales, por lo que se prefieren fetch_array / fetch_assoc.
Detallado de la documentación de PHP:
Disponible solo con mysqlnd.
Como mysqli_fetch_all () devuelve todas las filas como una matriz en un solo paso, puede consumir más memoria que algunas funciones similares, como mysqli_fetch_array (), que solo devuelve una fila a la vez del conjunto de resultados. Además, si necesita iterar sobre el conjunto de resultados, necesitará una construcción de bucle que afectará aún más el rendimiento. Por estas razones, mysqli_fetch_all () solo debe usarse en aquellas situaciones en las que el conjunto de resultados obtenidos se enviará a otra capa para su procesamiento.
Si realmente desea usarlo, debe instalar mySQL con una unidad nativa (mysqlnd) Ejemplo de instalación:
./configure --with-mysql=mysqlnd /
--with-mysqli=mysqlnd /
--with-pdo-mysql=mysqlnd /
En Ubuntu solo puedes hacer
sudo apt-get install php5-mysqlnd
http://www.php.net/manual/en/mysqli-result.fetch-all.php
Disponible solo con mysqlnd.
Notas sobre la habilitación de mysqlnd
: http://www.php.net/manual/en/mysqlnd.install.php