PHP Json 编码 PDO::FETCH_ASSOC

Posted

技术标签:

【中文标题】PHP Json 编码 PDO::FETCH_ASSOC【英文标题】:PHP Json Encode 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 不打印。 我正在对结果进行回应。 为什么你认为这是一个编码问题?您的数据是什么样的? 【参考方案1】:

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

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

【讨论】:

以上是关于PHP Json 编码 PDO::FETCH_ASSOC的主要内容,如果未能解决你的问题,请参考以下文章

php JSON使用PHP编码MySQL结果

kendoui parameterMap 解码 php 对象的正确 json 编码是啥?

PHP:无法用多行编码 json [重复]

PHP json 编码 - 格式错误的 UTF-8 字符,可能编码不正确

PHP/IOS:为 Web 服务编码 json 的最佳方式是啥?

将 JSON 编码的 PHP 变量传递给 HighCharts