PHP打印json_encode($rows)不显示任何内容


PHP print json_encode($rows) shows nothing

下面有两个函数,它们查询PHP,然后打印json。我在我的本地机器AMPP Apache服务器上尝试了一下,一切都能用Json打印出来。当我在我的主机上尝试时(所有的DB设置,测试都很好),不知何故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:不确定是谁对下面的所有答案投了反对票,因为这确实有助于我的调试。无论谁这样做,都需要负起责任,然后才能对以下答案投反对票。它们都有助于我的调试。

添加一些调试跟踪以了解发生了什么:

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);
}

并检查变量的内容有什么问题。

var_dump($rows)以确认其中存储有值。我想如果它是空的,那是因为你使用fetch_object()而不是fetch_assoc()

如果这是正确的,使用:print_r(json_encode($rows,1))打印出一个关联数组。