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

感谢我的答案,我发现我无法使用fetch_all()因为我使用PHP 5.2.17fetch_assoc while循环工作。


我正在使用fetch_all的函数返回这个错误:

致命错误:调用未定义的方法mysqli_result :: fetch_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行。

这个function是否工作? 有没有一种方法可以将我的数据放置在我自己的assoc数组中?

这个函数自PHP 5.3.0起可用。 可能你的版本比较老。 使用fetch_assoc()来代替。

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

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

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

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

请注意使用fetch_all():

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

阅读有关mysqldn要求的说明。

作为Fabrizios的补充,请考虑用循环构buildarrays:

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

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

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

改为:PHP 5.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_all()仍然不可用。 我发现这个问题时解决了为什么我的代码在一台服务器上工作,而不是另一台,PHP> 5.3。 使用phpinfo()来validation已安装的扩展。

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

我有5.6,但无论如何也没有为我工作。 通过启用mysqlnd驱动程序,它为我工作。 只要写apt-get install php5-mysqlnd然后重新启动PHP,你很好去!