我在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模块。我该如何安装?这可能是问题吗?
答案 0 :(得分:35)
你可能会错过它。mysqli_result :: fetch_all()需要MySQL本机驱动程序(mysqlnd)。
查看这些帖子,这可能会对您有所帮助。
答案 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)
http://www.php.net/manual/en/mysqli-result.fetch-all.php
仅适用于mysqlnd。
关于启用mysqlnd
的说明:http://www.php.net/manual/en/mysqlnd.install.php