【问题标题】:why Printing JSON in PHP via echo json_encode() Not show values but NULL some time?为什么通过 echo json_encode() 在 PHP 中打印 JSON 有时不显示值但 NULL?
【发布时间】:2011-12-01 15:32:52
【问题描述】:

我正在使用 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>');

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

【问题讨论】:

  • 我完全不明白问题出在哪里。你能澄清一下吗?
  • '特殊字符'被破坏通常意味着字符集不匹配。除非您的意思是 SQL 元字符,如您的问题标题中所示。如果是这种情况,那么您需要阅读有关 SQL 注入的信息:bobby-tables.com
  • 我稍微修正了格式,但我仍然不知道您的问题是什么。你试过php.net/json_last_error,看看有没有报错信息?

标签: php android mysql json


【解决方案1】:

我遇到过类似的情况,如果问题相同,请检查您的身边:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-10-25
    • 2017-04-21
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2011-12-29
    • 2014-04-24
    • 2012-11-09
    相关资源
    最近更新 更多