【问题标题】:PHP print json_encode($rows) shows nothing [duplicate]PHP print json_encode($rows) 什么也没显示[重复]
【发布时间】: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 格式错误,可能编码不正确

标签: php mysql json


【解决方案1】:

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

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

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

【讨论】:

  • 非常感谢这对我的调试有帮助。不知道谁投了反对票。我将其撤消。
【解决方案2】:

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

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

【讨论】:

  • var_dump($rows) confim 有价值。使用fetch_assoc()print_r(json_encode($rows,1)) 也不会产生任何结果:(
  • @Elye 为什么不将var_dump($rows); 的输出放在您的问题中?如果您使用 echo "<pre/>";print_r($rows); 并通过编辑将结果放入您的问题中会更好。
猜你喜欢
  • 2017-09-03
  • 1970-01-01
  • 2016-04-13
  • 2014-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-29
  • 1970-01-01
相关资源
最近更新 更多