【问题标题】:Json encode error from mysql result来自mysql结果的Json编码错误
【发布时间】:2011-07-24 04:41:15
【问题描述】:

我对以下错误Warning: [json] (php_json_encode) type is unsupported, encoded as null进行了一些研究,但没有找到太多答案?

我正在尝试对 mysql 查询的结果进行编码。不确定我可以提供什么信息.. 但是当我使用 mysql 数据的结果回显时

$data = json_encode($result);

回显 $data;

while($info = mysql_fetch_array($result))
            {
            $content[] = $info;
            }

$count = count($content);

    for($i=0;$i<$count;$i++){

        echo $content[$i]['Name'];

    }

一切正常。任何帮助都会很棒。

【问题讨论】:

  • 那么如果一切正常,那是什么问题
  • 展示你如何使用json_encode()。你的字符串编码是什么?
  • @ibu 未编码数据的回声显示正确,所以我知道它正在返回数据。
  • @zerkms 我在循环之前添加了 json_encode。见编辑。
  • @Denoteone:你试过用var_dump($result);看看$result里面有什么吗?你会惊讶的;-)

标签: php mysql json


【解决方案1】:

怎么样:

$result=array();
for($i=0;$i<$count;$i++)
{
    $result[]=$content[$i]['Name'];
}
echo json_encode($result);

【讨论】:

  • 谢谢 我知道我在做什么我需要在编码之前先将查询结果放入一个数组中。
  • @Denoteone:我什至会说 - 你首先需要获取结果,因为代码中的 $result 变量中只有资源引用。
【解决方案2】:

mysql_fetch_array 将返回一个包含数字和非数字值的数组。这对 PHP 来说很好,但它在其他格式中并不能很好地发挥作用,这很可能是问题的原因。你试过mysql_fetch_assoc吗?

大编辑

刚刚注意到您上面的代码。你有:

$data = json_encode($result);

echo $data;
while($info = mysql_fetch_array($result))

那是行不通的。 $result 是一种资源数据类型。它不能被序列化成可以被 json_encode 读取的东西。您必须首先创建其内容的数组并将其序列化。只是确保你知道。

【讨论】:

    猜你喜欢
    • 2015-10-06
    • 2010-09-27
    • 2017-04-20
    • 2011-11-23
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 2016-08-04
    • 2012-09-26
    相关资源
    最近更新 更多