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


Fatal error: Call to undefined method mysqli_result::fetch_all()

我在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-mysqlmysqlnd模块,它不会出现。如何安装?这可能是问题所在吗?

mysqli_result::fetch_all()需要MySQL本机驱动程序(mysqlnd)。

你很可能错过了。

看看这些帖子,可能会对你有所帮助。

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

fetch_all比fetch_array()消耗更多的内存,并具有其他有害的副作用,因此与其修复fetch_all,不如使用fetch_arrayfetch_assoc

详细信息来自PHP文档:

仅适用于mysqlnd。

由于mysqli_fetch_all()将所有行作为一个数组返回步骤中,它可能比一些类似的功能消耗更多的内存,例如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

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

仅适用于mysqlnd。

关于启用mysqlnd的注意事项:http://www.php.net/manual/en/mysqlnd.install.php