mysqli fetch_all()不是一个有效的函数?
感谢我的答案,我发现我无法使用fetch_all()
因为我使用PHP 5.2.17
– fetch_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; }
作为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,你很好去!