mysqli fetch_all () не действительная функция?

Благодаря ответам, я выяснил, что я не могу использовать fetch_all() потому что я использую PHP 5.2.17fetch_assoc с fetch_assoc циклом.


Функция, которую я использую fetch_all возвращается с этой ошибкой:

Неустранимая ошибка: вызов неопределенного метода mysqli_result :: fetch_all () в

 $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(); 

Я могу подключиться к БД, и я вытащил отдельные строки. Когда я помещаю запрос в PHPMYADMIN, я получаю 5 строк назад.

Работает ли эта функция? Есть ли способ разместить мои данные в массиве-помощнике самостоятельно?

Эта функция доступна с PHP 5.3.0. Возможно, ваша версия старше. fetch_assoc() этого используйте fetch_assoc() .

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

mysqli::fetch_all() должен быть установлен драйвер mysqlnd прежде чем вы сможете его использовать.

Типичным способом построения ассоциативного массива является цикл while:

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

Пожалуйста, будьте осторожны с использованием fetch_all ():

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

Прочтите примечание о требовании mysqldn.

В дополнение к ответам Fabrizios, пожалуйста, подумайте о создании массива с помощью цикла:

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

PHP Неустранимая ошибка: вызов неопределенной функции mysqli_fetch_all ()

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

измените на: php 5.3 или

 $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); 

Просто добавьте дополнительную заметку о драйвере mysqlnd : у него также должно быть установлено расширение API mysqli . Без расширения fetch_all() все равно будет недоступен. Я нашел это во время устранения неполадок, почему мой код работал на одном сервере, но не в другом, как PHP> 5.3. Используйте phpinfo() для проверки установленных расширений.

 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';}; } 

У меня было 5.6, но я все равно не работал. Включив драйвер mysqlnd, он работал для меня. Просто напишите apt-get install php5-mysqlnd затем перезагрузите php, и вы хорошо пойдете!