mysqli fetch\u all()不是有效函数?

wgxvkvu9  于 2021-06-18  发布在  Mysql
关注(0)|答案(11)|浏览(305)

多亏了这些答案,我才明白我不能使用 fetch_all() 因为我在用 PHP 5.2.17 - fetch_assocwhile 循环有效。
我正在使用的函数 fetch_all 返回时出现以下错误:
致命错误:调用中未定义的方法mysqli\u result::fetch\u all()

$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();

我能够连接到数据库,我拉了单行。当我将查询放在phpmyadmin中时,返回5行。
这个功能还能用吗?有没有一种方法可以让我自己将数据放入assoc数组?

jaxagkaj

jaxagkaj1#

问题似乎是“mysqli”和“mysqlnd”不在一起工作。我在cpanel也有同样的问题
步骤:
1) 转到cpanel Jmeter 板
2) 去“选择php版本”,你会看到一堆复选框
3) 设置php版本(5.4或更高版本)
4) 取消选中“mysqli”扩展,同时选中“mysqlind”和“nd\u mysqli”
显然'nd\u mysqli'是'mysqli',但配置为与'mysqlind'一起工作并使其工作,由于设置冲突,您必须取消选中'mysqli'。
下面的答案帮助了我。

yebdmbv4

yebdmbv42#

请小心使用fetch\u all():
http://www.php.net/manual/en/mysqli-result.fetch-all.php#88031
阅读有关mysqldn要求的说明。

e5njpo68

e5njpo683#

我有5.6分,但无论如何都不适合我。通过启用mysqlnd驱动程序,它为我工作。写吧 apt-get install php5-mysqlnd 然后重启php,就可以开始了!

vktxenjb

vktxenjb4#

构造关联数组的典型方法是 while 回路:

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

4si2a6ki5#

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

hgtggwj0

hgtggwj06#

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';};
    }
cx6n0qe3

cx6n0qe37#

只是想补充一点关于 mysqlnd 司机:还得有 mysqli 已安装api扩展。如果没有扩展, fetch_all() 还是没空。我是在排除代码在一台服务器上工作而不是在另一台服务器上工作的原因时发现这一点的,这两台服务器都是php>5.3。使用 phpinfo() 验证已安装的扩展。

ie3xauqp

ie3xauqp8#

此函数从PHP5.3.0开始提供。可能你的版本比较旧。使用 fetch_assoc() 相反。

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

w8biq8rn9#

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

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

balp4ylt10#

如果您不想使用karolis的答案进行迭代,请使用

while($row = mysqli_fetch_array($result,MYSQLI_ASSOC))
    {
       $rows[] = $row;
    }

达到与…相同的结果

$rows = mysqli_fetch_all($result, MYSQLI_ASSOC);

你可以把常数改为 MYSQLI_NUM 或者 MYSQLI_BOTH . 此可选参数是常量,指示应从当前行数据生成何种类型的数组。
注意 mysqli_fetch_array($result,MYSQLI_ASSOC ) 行为与 mysqli_fetch_assoc() 函数,而 mysqli_fetch_array($result,MYSQLI_NUM) 将与 mysqli_fetch_row() 功能。最后的选择 MYSQLI_BOTH 将创建一个同时具有这两个属性的数组。http://php.net/manual/en/mysqli-result.fetch-array.php

hec6srdp

hec6srdp11#

php致命错误:调用未定义的函数mysqli\u fetch\u all()

$rows = mysqli_fetch_all($result, MYSQLI_ASSOC);//not work

更改为: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);

相关问题