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

时间:2012-07-26 07:37:24

标签: 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);

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

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

3 个答案:

答案 0 :(得分:35)

  

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

你可能会错过它。

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

mysqli fetch_all() not a valid function?

答案 1 :(得分:4)

fetch_all比fetch_array()消耗更多内存,并且具有其他有害的副作用,因此首选fetch_array / fetch_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

答案 2 :(得分:2)