23

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 モジュール。どうすればインストールできますか? それが問題でしょうか?

4

3 に答える 3

40

mysqli_result :: fetch_all()にはMySQLネイティブドライバー(mysqlnd)が必要です。

おそらくあなたはそれを見逃しているかもしれません。

あなたを助けるかもしれないこの投稿を見てください。

mysqli fetch_all()は有効な関数ではありませんか?

于 2012-07-26T07:47:41.253 に答える
4

fetch_allfetch_array() より多くのメモリを消費し、他の有害な副作用があるため、 を修正する代わりに、fetch_allまたは使用することをfetch_arrayfetch_assocお勧めします。

PHPドキュメントからの詳細:

mysqlnd でのみ使用できます。

mysqli_fetch_all() はすべての行を 1 つのステップで配列として返すため、結果セットから一度に 1 行しか返さない mysqli_fetch_array() などの同様の関数よりも多くのメモリを消費する可能性があります。さらに、結果セットを反復処理する必要がある場合は、パフォーマンスにさらに影響を与えるループ構造が必要になります。これらの理由から、mysqli_fetch_all() は、フェッチされた結果セットが処理のために別のレイヤーに送信される状況でのみ使用する必要があります。

本当に使いたい場合は、ネイティブ ドライブ (mysqlnd) で mySQL をインストールする必要があります。 インストール例:

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

Ubuntuでは、次のことができます

sudo apt-get install php5-mysqlnd
于 2013-01-14T05:02:11.123 に答える
3

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

mysqlnd でのみ使用できます。

有効化に関する注意事項mysqlnd: http://www.php.net/manual/en/mysqlnd.install.php

于 2012-07-26T07:50:43.767 に答える