Ubuntu 10.04でPHPに問題があります。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)が必要です。
おそらくあなたはそれを見逃しているかもしれません。
この投稿をご覧ください。役立つかもしれません。
fetch_allはfetch_array()よりも多くのメモリを消費し、他の有害な副作用があるため、fetch_array/fetch_assocが推奨されます。
PHPドキュメンテーション:
Mysqlndでのみ使用できます。
Mysqli_fetch_all()は単一のステップですべての行を配列として返すため、結果セットから一度に1行のみを返す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