【发布时间】:2016-04-06 11:23:10
【问题描述】:
我在下面有两个函数可以查询 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:相同的功能适用于同一个远程主机服务器,用于另一个数据库。它也适用于我的本地主机。
*已更新
'var_dump(json_encode($rows), json_last_error())' 显示bool(false) int(5)。不知道是什么意思。
我的查询只是$newsquery = "SELECT * FROM newstbl where Status = 1";
*更新
经过进一步调试,我发现其中一个字段是 description 字段,其中包含长数据...如果省略该字段,一切正常。但如果包括在内,它不会打印出来。
这也可能暗示与 UTF-8 无关。因为description 都是正常的英文字符。因此,这似乎不像另一个问题的重复。
p/s:不确定是谁对以下所有答案投了反对票,因为它确实有助于我的调试。在对以下答案投反对票之前,这样做的人需要负责。它们都对我的调试有帮助。
【问题讨论】:
-
print_r(json_encode($rows));
-
print_r( json_encode(($rows));还要检查var_dump($rows);的输出。检查并告诉 -
请运行
var_dump(json_encode($rows), json_last_error())并使用信息更新问题。 -
print_r(json_encode(($rows))不起作用。var_dump($rows)得到按预期显示的数组数据。 -
您遇到编码错误:UTF-8 格式错误,可能编码不正确