【问题标题】:PHP Json Encode PDO::FETCH_ASSOCPHP Json 编码 PDO::FETCH_ASSOC
【发布时间】:2016-08-31 10:30:41
【问题描述】:

我正在尝试返回我的 MSSQL 数据库表的所有行,并将它们以 JSON_ENCODE 的形式输出。

当我使用它并回显 $json 时,我得到一个空白页。当我对该 var 执行 var_dump 时,我得到一个 bool,false。

$sth = $db->prepare("SELECT * FROM dbo.Devices");
$sth->execute();

$array = $sth->fetchAll( PDO::FETCH_ASSOC );
$json = json_encode($array);

但是,如果我将相同的 fetchAll 放入结果 var 并打印它,它工作正常!

Working using print function.
$result = $sth->FetchAll();
print_r($result);

我读过其他人有类似的问题,这是一个 UTF8 编码问题,所以我尝试在 $array 上执行 json_encode 之前的 utf8_encode,但结果相同,结果为空白页。谁能解释一下?

【问题讨论】:

  • 第二个例子中没有使用PDO::FETCH_ASSOC。删除该选项是否允许您json_encode() 结果?
  • 不,我在删除它时也会得到一个空白页。
  • 等等,你是不是因为没有打印出 json_encoded 结果而得到一个空白页? print_r 打印到屏幕,json_encode 不打印。
  • 我正在对结果进行回应。
  • 为什么你认为这是一个编码问题?您的数据是什么样的?

标签: php json pdo


【解决方案1】:

json_encode 对字符编码敏感。如果无法处理编码,它将失败。 print_r 不是。它会很高兴地打印出你给它的任何东西。

utf8_encode 修复仅在源数据中的字符串编码为 ISO-8859-1 时才有效。假设这是真的,它应该工作。确保你这样做...https://stackoverflow.com/a/2790107/111755

【讨论】:

    猜你喜欢
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多