多亏了这些答案,我才明白我不能使用 fetch_all()
因为我在用 PHP 5.2.17
- fetch_assoc
与 while
循环有效。
我正在使用的函数 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数组?
11条答案
按热度按时间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'。
下面的答案帮助了我。
yebdmbv42#
请小心使用fetch\u all():
http://www.php.net/manual/en/mysqli-result.fetch-all.php#88031
阅读有关mysqldn要求的说明。
e5njpo683#
我有5.6分,但无论如何都不适合我。通过启用mysqlnd驱动程序,它为我工作。写吧
apt-get install php5-mysqlnd
然后重启php,就可以开始了!vktxenjb4#
构造关联数组的典型方法是
while
回路:4si2a6ki5#
mysqli::fetch_all()
需要mysqlnd
要安装的驱动程序才能使用。hgtggwj06#
cx6n0qe37#
只是想补充一点关于
mysqlnd
司机:还得有mysqli
已安装api扩展。如果没有扩展,fetch_all()
还是没空。我是在排除代码在一台服务器上工作而不是在另一台服务器上工作的原因时发现这一点的,这两台服务器都是php>5.3。使用phpinfo()
验证已安装的扩展。ie3xauqp8#
此函数从PHP5.3.0开始提供。可能你的版本比较旧。使用
fetch_assoc()
相反。w8biq8rn9#
作为fabrizios答案的补充,请考虑使用循环构建阵列:
balp4ylt10#
如果您不想使用karolis的答案进行迭代,请使用
达到与…相同的结果
你可以把常数改为
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.phphec6srdp11#
php致命错误:调用未定义的函数mysqli\u fetch\u all()
更改为:PHP5.3或