mysqli fetch_all () не является допустимой функцией? - PullRequest
44 голосов
/ 14 июля 2011

Благодаря ответам я понял, что я не могу использовать fetch_all(), потому что я использую PHP 5.2.17 - fetch_assoc с while сработавшей петлей.


Функция IЯ использую 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 строк назад.

Эта функция вообще работает?Есть ли способ, которым я могу поместить свои данные в ассоциированный массив самостоятельно?

Ответы [ 11 ]

48 голосов
/ 14 июля 2011

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

while ($row = $result->fetch_assoc()) {
    // do what you need.
}
32 голосов
/ 22 октября 2014

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

17 голосов
/ 14 июля 2011

Типичный способ создания ассоциативного массива - цикл while:

$results_array = array();
$result = $mysqli->query($query);
while ($row = $result->fetch_assoc()) {
  $results_array[] = $row;
}
10 голосов
/ 14 июля 2011

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

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

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

8 голосов
/ 14 июля 2011

В качестве дополнения к ответу Фабрициоса, рассмотрите возможность построения вашего массива с помощью цикла:

$array = array();
while($row = $result->fetch_assoc())
    $array[] = $row;
3 голосов
/ 24 марта 2018

Используйте

сильный текст $rows = mysqli_fetch_array($result, MYSQLI_ASSOC);

для достижения того же результата, что и $rows = mysqli_fetch_all($result, MYSQLI_ASSOC);, если вы не хотите повторять, используя Karolis 'ответ.

Вы можете изменить константу на MYSQLI_NUM или MYSQLI_BOTH.Этот необязательный параметр является константой, указывающей, какой тип массива должен быть создан из данных текущей строки.

При использовании константы MYSQLI_ASSOC эта функция будет вести себя так же, как и mysqli_fetch_assoc (), а MYSQLI_NUM будет вести себя так же, как и mysqli_fetch_row () функция.Последняя опция MYSQLI_BOTH создаст один массив с атрибутами обоих.http://php.net/manual/en/mysqli-result.fetch-array.php

2 голосов
/ 25 марта 2017

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

1 голос
/ 20 июня 2019

Похоже, что «mysqli» и «mysqlnd» не работают вместе. У меня была такая же проблема в cpanel. Следующий ответ, который я нашел здесь помог мне.

Шаги:

1) Перейти к панели инструментов CPanel

2) Зайдите в «Выбор версии PHP», вы должны увидеть несколько флажков

3) Установить версию PHP (5.4 или выше)

4) Снимите флажок с расширения «mysqli» и проверьте «mysqlind» и «nd_mysqli»

Очевидно, что 'nd_mysqli' - это 'mysqli', но он настроен для работы с 'mysqlind', и чтобы он работал, вам нужно снять флажок 'mysqli' из-за конфликтов настроек.

1 голос
/ 15 апреля 2016

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

1 голос
/ 06 февраля 2016

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...