У меня проблемы с PHP в Ubuntu 10.04. Когда я пытаюсь использовать mysqli_result :: fetch_all, появляется такая ошибка:
Вызов неопределенного метода 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 не появляется. Как его установить? Может ли это быть проблема?
mysqli_result :: fetch_all () требует MySQL Native Driver (mysqlnd).
скорее всего, вы можете пропустить его.
посмотрите на эти сообщения, которые могут вам помочь.
mysqli fetch_all () не действительная функция?
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
http://www.php.net/manual/en/mysqli-result.fetch-all.php
Доступно только с mysqlnd.
Заметки о включении mysqlnd
: http://www.php.net/manual/en/mysqlnd.install.php