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

2022-08-30 18:19:31

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


答案 1

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

您可能错过了它。

看看这篇文章,这可能会对你有所帮助。

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


答案 2

fetch_all比fetch_array()消耗更多的内存,并且具有其他有害的副作用,因此最好使用fetch_arrayfetch_assoc而不是修复。fetch_all

详细来自 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

推荐