Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysqli fetch_all()不是有效的函数?_Php_Mysqli - Fatal编程技术网

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

Php mysqli fetch_all()不是有效的函数?,php,mysqli,Php,Mysqli,由于这些答案,我发现我无法使用fetch_all(),因为我在循环工作时使用PHP5.2.17-fetch_assoc 我正在使用的函数fetch\u all返回时出现以下错误: 致命错误:在中调用未定义的方法mysqli_result::fetch_all() 我能够连接到DB,并且我拉了一行。当我将查询放在PHPMYADMIN中时,返回了5行 这个功能还能用吗?有没有办法自己将数据放入assoc数组?请小心使用fetch_all() 阅读有关mysqldn要求的说明。此函数从PHP 5.

由于这些答案,我发现我无法使用
fetch_all()
,因为我在
循环工作时使用
PHP5.2.17
-
fetch_assoc


我正在使用的函数
fetch\u all
返回时出现以下错误:

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

我能够连接到DB,并且我拉了一行。当我将查询放在PHPMYADMIN中时,返回了5行


这个功能还能用吗?有没有办法自己将数据放入assoc数组?

请小心使用fetch_all()


阅读有关mysqldn要求的说明。

此函数从PHP 5.3.0开始提供。可能你的版本比较旧。改用
fetch\u assoc()

while ($row = $result->fetch_assoc()) {
    // do what you need.
}

作为FabRiZOS解决方案的补充,请考虑用循环建立数组:

$array = array();
while($row = $result->fetch_assoc())
    $array[] = $row;

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

$results_array = array();
$result = $mysqli->query($query);
while ($row = $result->fetch_assoc()) {
  $results_array[] = $row;
}

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

PHP致命错误:调用未定义的函数mysqli_fetch_all()

更改为:PHP5.3或

$query = "SELECT * FROM `user_counter` ORDER BY id DESC LIMIT 20";
$result =  mysqli_query($connection, $query) or die
("Error in Selecting " . mysqli_error($connection));
$rows = array();
while ($row = $result->fetch_assoc()) {
    $rows[] = $row;
}
echo json_encode($rows);

只需添加一个关于
mysqlnd
驱动程序的附加说明:它还必须安装
mysqli
API扩展。没有扩展,
fetch\u all()
仍然不可用。我在排除代码在一台服务器上工作而在另一台服务器上工作的原因时发现了这一点,这两台服务器都是PHP>5.3。使用
phpinfo()
验证已安装的扩展。

我有5.6版本,但无论如何都不适用于我。通过启用mysqlnd驱动程序,它为我工作。只需编写
apt get install php5 mysqlnd
,然后重新启动php,就可以开始了

如果您不想使用答案进行迭代,
function runQuery($query) {
        $result = mysqli_query($this->conn,$query);
                $resultset  = array(); //you need to define array
                         while($row=$result->fetch_assoc()) {
                              $resultset[] = $row; //then insert result into the array
            }       
            if(!empty($resultset))
            {

            return $resultset;}
            else{return 'empty';};
    }
使用

     while($row = mysqli_fetch_array($result,MYSQLI_ASSOC))
    {
       $rows[] = $row;
    }
达到与之相同的结果

$rows = mysqli_fetch_all($result, MYSQLI_ASSOC);
您可以将常量更改为
MYSQLI\u NUM
MYSQLI\u两者
。 此可选参数是常量,指示应从当前行数据生成何种类型的数组

请注意,
mysqli_fetch_数组($result,mysqli_ASSOC)
的行为与
mysqli_fetch_ASSOC()
函数相同,而
mysqli_fetch_数组($result,mysqli_NUM)
的行为与
mysqli_fetch_行()
函数相同。最后一个选项
MYSQLI\u all
将创建一个包含这两个属性的数组。
问题似乎是“mysqli”和“mysqlnd”不在一起工作。我在cpanel也有同样的问题

步骤:

1) 转到CPanel仪表板

2) 转到“选择PHP版本”,您将看到一组复选框

3) 设置PHP版本(5.4或更高版本)

4) 取消选中“mysqli”扩展,同时选中“mysqlind”和“nd_mysqli”

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


下面的答案对我很有帮助。

是的,如果您在Debian上运行roundcube,它将停止工作,因为mysqlnd删除了php-mdb2-driver-mysql和roundcube-mysql驱动程序。因此,安装mysqlnd时要注意,这个答案基本上是错误的<代码>mysqli_获取_数组($result,mysqli_ASSOC)没有获得与
$rows=mysqli\u fetch\u all($result,mysqli\u ASSOC)相同的结果很有趣,我没有注意到。这是正确的答案。这不是关于PHP版本,而是关于扩展。必须是nd_mysqli和mysqlind。我的主机预先选择了mysqli和nd_mysqli,这就是为什么mysqli_fetch_都不工作。回答正确!非常感谢,我不知道为什么会发生这种情况,但它帮助了我^^正确!谢谢!!不要只是一时兴起就改变这个设置,它可能会产生严重的影响。这样做会关闭我的网站,直到我恢复更改。在该页面上找不到有关mysqldn要求的任何信息。你能解释一下,为什么fetch_all()是“邪恶的”吗?谢谢
     while($row = mysqli_fetch_array($result,MYSQLI_ASSOC))
    {
       $rows[] = $row;
    }
$rows = mysqli_fetch_all($result, MYSQLI_ASSOC);