为什么在PHP中通过echo json_encode()打印JSON在某些时候不显示值但是NULL?

时间:2011-10-05 16:25:34

标签: php android mysql json

我正在使用Android来创建应用。用户答案通过PHP代码存储在服务器上的mySQL上。

function fetch_all_complaints_by_packet($packet) {
    global $dBConnection;

    $query = "SELECT * FROM ".DB_PREFIX ."complaint ORDER BY id DESC LIMIT 0 , 10";
    $result = mysql_query($query,$dBConnection) or die('Errant query:  '.$query);

    $complaints = array();

    if(mysql_num_rows($result)) {
        $i = 0;

        while($complaint = mysql_fetch_assoc($result)) {
            $complaints[$i] = $complaint;
            echo ($complaint['details'].'<br>');
            $i++;
        }
    }

    //echo json_encode($complaints);
}

以下一行

echo json_encode();

导致错误显示详细信息为NULL,但

echo json_encode($complaint['details'].'<br>');

打印正确的数据。问题是什么?

1 个答案:

答案 0 :(得分:3)

我有类似的东西可能会检查你的身边是否有相同的问题:

当你有一个无效的UTF-8字符串(无效的utf-8字符)并尝试对该数据进行JSON_Encode时,它将返回NULL。

在我的代码中花费了我几个小时的时间才找到它,因为它毕竟是AJAX调用,所以你无法真正看到错误的出现。

我的建议是打开错误登录并显示所有错误,您可能会看到有关失败的UTF-8编码的错误。如果没有,请尝试utf8_decode您的数据,看看它是否会发出我告诉你的错误。