致命错误:调用未定义的方法mysqli_result :: fetch_all()

Sto*_*res 20 php mysqli fetchall mysqlnd

我在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);
Run Code Online (Sandbox Code Playgroud)

我不想在循环中使用fetch_assoc,因为我将结果发送到另一个层进行处理.

我使用的是PHP 5.4.4.和php -m | grep mysql mysqlnd模块它没有出现.我该如何安装?这可能是问题吗?

Ibr*_*mar 37

mysqli_result :: fetch_all()需要MySQL Native Driver(mysqlnd).

你可能会错过它.

看看这篇帖子,这可能会对你有所帮助.

mysqli fetch_all()不是一个有效的函数?

  • Ubuntu用户可以这样做:`sudo apt-get install php5-mysqlnd` (10认同)

won*_*ton 5

fetch_all比fetch_array()消耗更多的内存,并且还有其他不利的副作用,因此首选fetch_array / fetch_assoc。

PHP文档中的详细信息:

仅在mysqlnd中可用。

由于mysqli_fetch_all()在单个步骤中将所有行作为数组返回,因此它可能比某些类似函数(如mysqli_fetch_array())消耗更多的内存,而mysqli_fetch_array()一次仅从结果集中返回一行。此外,如果需要遍历结果集,则将需要一个循环结构,这将进一步影响性能。由于这些原因,mysqli_fetch_all()仅应在将获取的结果集发送到另一层进行处理的情况下使用。

如果确实要使用它,则必须使用本机驱动器(mysqlnd)安装mySQL示例安装:

./configure --with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
Run Code Online (Sandbox Code Playgroud)

在Ubuntu上,您可以做

sudo apt-get install php5-mysqlnd
Run Code Online (Sandbox Code Playgroud)