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

Phi*_*hil 44 php mysqli

多亏了我已经想通了,我无法使用的答案fetch_all(),因为我使用PHP 5.2.17- fetch_assocwhile循环工作.


我正在使用的函数fetch_all回来时出现此错误:

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

$mysqli = new mysqli($host, $username, $password, $database);
$query = "LONG QUERY that works, tested in phpmyadmin"
$result = $mysqli->query($query);
$result->fetch_all(); or  $mysqli->fetch_all() tried both
mysqli_fetch_all() was already tried.
$mysqli->close(); 
Run Code Online (Sandbox Code Playgroud)

我能够连接到数据库,我已经拉了一行.当我将查询放在PHPMYADMIN中时,我得到5行.

这个功能是否有效?有没有办法可以自己将数据放入一个关联数组中?

Kar*_*lis 48

从PHP 5.3.0开始,此功能可用.可能你的版本较旧.请fetch_assoc()改用.

while ($row = $result->fetch_assoc()) {
    // do what you need.
}
Run Code Online (Sandbox Code Playgroud)


Has*_*imi 33

mysqli::fetch_all()需要mysqlnd驱动程序才能使用它.

  • 是的,如果你有一个圆形立方体运行(在Debian上)它将停止工作,因为mysqlnd删除了php-mdb2-driver-mysql和roundcube-mysql驱动程序.所以请谨慎安装mysqlnd (2认同)

Mic*_*ski 17

构造关联数组的典型方法是while循环:

$results_array = array();
$result = $mysqli->query($query);
while ($row = $result->fetch_assoc()) {
  $results_array[] = $row;
}
Run Code Online (Sandbox Code Playgroud)


jav*_*tar 15

问题似乎是 'mysqli' 和 'mysqlnd' 不能一起工作。我在 cpanel 中遇到了同样的问题

脚步:

1) 转到 CPanel 仪表板

2) 转到“选择 PHP 版本”,您应该会看到一堆复选框

3)设置PHP版本(5.4或以上)

4) 取消选中“mysqli”扩展名并选中“mysqlind”和“nd_mysqli”

显然 'nd_mysqli' 是 'mysqli',但配置为与 'mysqlind' 一起使用,为了使其工作,由于设置冲突,您必须取消选中 'mysqli'。

我在这里找到的以下答案对我有帮助。


Fab*_*ssa 9

请注意使用fetch_all():

http://www.php.net/manual/en/mysqli-result.fetch-all.php#88031

阅读有关mysqldn要求的说明.


Sas*_*ley 7

作为Fabrizios答案的补充,请考虑使用循环构建阵列:

$array = array();
while($row = $result->fetch_assoc())
    $array[] = $row;
Run Code Online (Sandbox Code Playgroud)