PHP打印json_encode($ rows)显示没有

时间:2016-04-06 11:23:10

标签: php mysql json

下面有两个函数查询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:不确定是谁对下面的所有答案进行了投票,因为它确实有助于我的调试。无论谁做到这一点,都需要对下面的答案进行投票之前负责。它们都有助于我的调试。

2 个答案:

答案 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))打印出一个关联数组。