下面有两个函数查询PHP,然后打印出json。
我试过我的本地机器AMPP Apache服务器,一切都与Json打印一起工作。当我尝试使用我的主机(所有数据库设置,测试良好)时,print json_encode($rows)
不会在远程主机服务器上打印任何内容。
所以我在下面添加了调试echo sizeof($rows)
,确实有8条记录符合预期。 print json_encode($rows)
什么不能打印任何东西?如何进一步调试?
function queryPrintJson($cnx, $query) {
$rows=queryReturnJsonArray($cnx, $query);
echo sizeof($rows);
print json_encode($rows);
}
function queryReturnJsonArray($cnx, $query) {
$result=mysqli_query($cnx, $query) or die ("Can't execute query!");
$rows = array();
while($obj = $result->fetch_object()){
$rows[] = $obj;
}
$result->close();
return $rows;
}
p / s:同一个函数在同一个远程主机服务器上运行,对另一个db运行。它也适用于我的localhost。
*更新
' var_dump(json_encode($ rows),json_last_error())'显示bool(false) int(5)
。不知道这意味着什么。
我的查询只是$newsquery = "SELECT * FROM newstbl where Status = 1";
* UPDATE
经过进一步调试后,我发现其中一个字段是description
字段,其中包含长数据...如果省略该字段,一切正常。但如果包括在内,它就不会打印出来。
这也可能意味着与UTF-8无关。因为description
都是正常的英文字符。因此,似乎并不是另一个问题的副本。
p / s:不确定是谁对下面的所有答案进行了投票,因为它确实有助于我的调试。无论谁做到这一点,都需要对下面的答案进行投票之前负责。它们都有助于我的调试。
答案 0 :(得分:0)
添加一些调试跟踪以了解正在进行的操作:
function queryPrintJson($cnx, $query) {
$rows=queryReturnJsonArray($cnx, $query);
echo sizeof($rows);
// only for debug
$tmp = json_encode($rows);
var_dump($rows, $tmp);
print json_encode($rows);
}
...并检查变量内容的错误。
答案 1 :(得分:-1)
var_dump($rows)
确认其中存储了值。
我想如果它是空的,因为你使用的是fetch_object()
而不是fetch_assoc()
如果正确使用:print_r(json_encode($rows,1))
打印出一个关联数组。