我有PHP在Ubuntu 10.04的问题。 当我尝试使用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模块。 如何安装呢? 莫非是这个问题?
mysqli_result :: fetch_all()需要MySQL原生驱动程序(mysqlnd)。
没准你可能缺少它。
看看这个帖子,可以帮助你。
mysqli的fetch_all()不是一个有效的功能?
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
http://www.php.net/manual/en/mysqli-result.fetch-all.php
仅适用于mysqlnd。
有关启用注mysqlnd
: http://www.php.net/manual/en/mysqlnd.install.php