Sto*_*res 20 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);
Run Code Online (Sandbox Code Playgroud)
我不想在循环中使用fetch_assoc,因为我将结果发送到另一个层进行处理.
我使用的是PHP 5.4.4.和php -m | grep mysql mysqlnd模块它没有出现.我该如何安装?这可能是问题吗?
Ibr*_*mar 37
mysqli_result :: fetch_all()需要MySQL Native Driver(mysqlnd).
你可能会错过它.
看看这篇帖子,这可能会对你有所帮助.
fetch_all比fetch_array()消耗更多的内存,并且还有其他不利的副作用,因此首选fetch_array / fetch_assoc。
PHP文档中的详细信息:
仅在mysqlnd中可用。
由于mysqli_fetch_all()在单个步骤中将所有行作为数组返回,因此它可能比某些类似函数(如mysqli_fetch_array())消耗更多的内存,而mysqli_fetch_array()一次仅从结果集中返回一行。此外,如果需要遍历结果集,则将需要一个循环结构,这将进一步影响性能。由于这些原因,mysqli_fetch_all()仅应在将获取的结果集发送到另一层进行处理的情况下使用。
如果确实要使用它,则必须使用本机驱动器(mysqlnd)安装mySQL示例安装:
./configure --with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
Run Code Online (Sandbox Code Playgroud)
在Ubuntu上,您可以做
sudo apt-get install php5-mysqlnd
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47463 次 |
| 最近记录: |