我是新来的mysqli,开始努力学习基本的东西。 对于这一点,我的例子( http://php.net/manual/en/mysqli-result.fetch-array.php )我试图fetch_array。 这里是我的代码。
$sqlGetChartData = "SELECT date, ratepersqft, location
FROM ratepersqft
WHERE project_id = 1";
$runGetChartData = $mysqli->query($sqlGetChartData);
while($rowGetChartData = $runGetChartData->fetch_array(MYSQLI_BOTH))
$arrGetChartData[] = $rowGetChartData;
print "<pre>";
print_r($arrGetChartData);
exit();
在这里我得到这个错误调用一个成员函数fetch_array()上线非对象旁边,而条件线。 我试着用搜索引擎并没有得到结果我的问题。 希望我的问题是清楚的。 提前致谢。
运行查询时,务必检查错误。
而且,请不要使用不必要的长变量伸展你的代码
$arrChartData[] = array();
$sql = "SELECT date, ratepersqft, location FROM ratepersqft WHERE project_id = 1";
$res = $mysqli->query($sql) or trigger_error($mysqli->error."[$sql]");
while($row = $res->fetch_assoc()) {
$arrChartData[] = $row;
}
你看,第一个变量包含在你的程序中没有特殊的含义只是SQL代码,它将被设置在非常下一行。
第二个变量的mysqli结果。 没有特殊含义的一次。 这是确定使用传统的名字。
这同样适用于临时$row
变量。
那些在你的代码的特殊含义的唯一的变量是$arrChartData[]
-所以,给它有意义的名字。 您需要填写虽然之前进行初始化。
并注意trigger_error
部分将mysqli的错误转化为PHP错误。 始终运行查询这种方式,通知所有MySQL错误
顺便说一句,这是很好的做法,摆脱所有的临时变量,它们移动到某种助手功能,使您的应用程序代码一样简单下列2行
$sql = "SELECT date, ratepersqft, location FROM ratepersqft WHERE project_id = 1";
$arrChartData[] = dbGetAll($sql);
它会使你的代码更短,更易读。
查询可能失败mysqli::query
返回FALSE。 因此$runGetChartData
不是mysqli_result
对象,而是一个boolean
,这就是为什么你得到你的错误。
从文档 :
失败时返回FALSE。 对于成功的SELECT,SHOW,描述或解释查询mysqli_query()将返回一个mysqli_result对象。 对于其他的成功查询mysqli_query()将返回TRUE。
文章来源: mysqli - fetch_Array error call to a member function fetch_array() on a non-object mysqli