Подтвердить что ты не робот

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

У меня проблемы с PHP в Ubuntu 10.04. Когда я пытаюсь использовать mysqli_result:: fetch_all, появляется такая ошибка:

Вызов метода undefined mysqli_result:: fetch_all()

Однако он работает в Windows XP.

Код:

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

Я не хочу использовать fetch_assoc с циклом, потому что я отправляю результат на другой уровень для обработки.

Я использую PHP 5.4.4. и с php -m | grep mysql модуль mysqlnd не появляется. Как его установить? Это может быть проблема?

4b9b3361

Ответ 2

fetch_all потребляет больше памяти, чем fetch_array(), и имеет другие побочные эффекты, поэтому fetch_array/fetch_assoc являются предпочтительными.

Подробный из документации PHP:

Доступно только с mysqlnd.

Так как mysqli_fetch_all() возвращает все строки в виде массива в одном шаг, он может потреблять больше памяти, чем некоторые аналогичные функции, такие как mysqli_fetch_array(), который возвращает только одну строку за раз из результат набор. Кроме того, если вам нужно повторить набор результатов, вы потребуется конструкция цикла, которая будет еще больше влиять на производительность. По этим причинам mysqli_fetch_all() следует использовать только в тех ситуации, когда полученный набор результатов будет отправлен на другой уровень для обработки.

Если вы действительно хотите его использовать, вам нужно установить mySQL с помощью собственного диска (mysqlnd) Пример установки:

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

В Ubuntu вы можете просто сделать

sudo apt-get install php5-mysqlnd