w3schools query mysqli_assoc mysql_fetch_assoc mysql_fetch_array mysql_fetch_all fetch_assoc all php mysqli

php - query - mysqli fetch_all() no es una función válida?



mysqli query get all rows (10)

Como complemento de la respuesta de Fabrizios, considere construir su matriz con un bucle:

$array = array(); while($row = $result->fetch_assoc()) $array[] = $row;

Gracias a las respuestas he descubierto que no puedo usar fetch_all() porque estoy usando PHP 5.2.17 - fetch_assoc con while loop funcionado.

La función que estoy usando fetch_all regresa con este error:

Error fatal: llamada al método indefinido mysqli_result :: fetch_all () en

$mysqli = new mysqli($host, $username, $password, $database); $query = "LONG QUERY that works, tested in phpmyadmin" $result = $mysqli->query($query); $result->fetch_all(); or $mysqli->fetch_all() tried both mysqli_fetch_all() was already tried. $mysqli->close();

Puedo conectarme a la base de datos y he sacado filas simples. Cuando coloco la consulta en PHPMYADMIN, recupero 5 filas.

Funciona esta función? ¿Hay alguna manera de que pueda colocar mis datos en una matriz de asociación por mi cuenta?


Error grave de PHP: llamada a la función no definida mysqli_fetch_all ()

$rows = mysqli_fetch_all($result, MYSQLI_ASSOC);//not work

cambiar a: php 5.3 o

$query = "SELECT * FROM `user_counter` ORDER BY id DESC LIMIT 20"; $result = mysqli_query($connection, $query) or die ("Error in Selecting " . mysqli_error($connection)); $rows = array(); while ($row = $result->fetch_assoc()) { $rows[] = $row; } echo json_encode($rows);


Esta función está disponible desde PHP 5.3.0. Posiblemente su versión sea más antigua. Use fetch_assoc() lugar.

while ($row = $result->fetch_assoc()) { // do what you need. }


La forma típica de construir una matriz asociativa es en un ciclo while:

$results_array = array(); $result = $mysqli->query($query); while ($row = $result->fetch_assoc()) { $results_array[] = $row; }


Solo para agregar una nota adicional sobre el controlador mysqlnd : También debe tener instalada la extensión de la API mysqli . Sin la extensión, fetch_all() aún no estará disponible. Encontré esto al solucionar los problemas de por qué mi código funcionaba en un servidor pero no en otro, tanto PHP> 5.3. Use phpinfo() para verificar las extensiones instaladas.


Tenía 5.6 pero no funcionó para mí de todos modos. Al habilitar el controlador mysqlnd funcionó para mí. Simplemente escribe apt-get install php5-mysqlnd luego reinicia php y listo.



Utilizar

texto fuerte $rows = mysqli_fetch_array($result, MYSQLI_ASSOC);

para lograr el mismo resultado que $rows = mysqli_fetch_all($result, MYSQLI_ASSOC); si no quieres iterar usando la respuesta de Karolis .

Puede cambiar constante a MYSQLI_NUM o MYSQLI_BOTH . Este parámetro opcional son constantes que indican qué tipo de matriz se debe producir a partir de los datos de fila actuales.

Al usar la constante MYSQLI_ASSOC, esta función se comportará de manera idéntica a la mysqli_fetch_assoc (), mientras que MYSQLI_NUM se comportará de manera idéntica a la función mysqli_fetch_row (). La opción final MYSQLI_BOTH creará una única matriz con los atributos de ambos. http://php.net/manual/en/mysqli-result.fetch-array.php


mysqli::fetch_all() necesita el controlador mysqlnd para ser instalado antes de poder usarlo.


function runQuery($query) { $result = mysqli_query($this->conn,$query); $resultset = array(); //you need to define array while($row=$result->fetch_assoc()) { $resultset[] = $row; //then insert result into the array } if(!empty($resultset)) { return $resultset;} else{return ''empty'';}; }