PHP Json编码PDO::FETCH_ASSOC

PHP Json编码PDO::FETCH_ASSOC,php,json,pdo,Php,Json,Pdo,我试图返回MSSQL数据库表中的所有行,并将它们以JSON_编码输出 当我使用它并回显$json时,会得到一个空白页面。当我对该变量进行变量转储时,我得到一个布尔值,false。 $sth = $db->prepare("SELECT * FROM dbo.Devices"); $sth->execute(); $array = $sth->fetchAll( PDO::FETCH_ASSOC ); $json = json_encode($array); 但是,如果我将相

我试图返回MSSQL数据库表中的所有行,并将它们以JSON_编码输出

当我使用它并回显$json时,会得到一个空白页面。当我对该变量进行变量转储时,我得到一个布尔值,false。

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

$array = $sth->fetchAll( PDO::FETCH_ASSOC );
$json = json_encode($array);
但是,如果我将相同的fetchAll放入一个结果变量并打印它,它就可以正常工作了

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

我曾读到其他人也有类似的问题,这是UTF8编码问题,因此我尝试在json编码之前对$array进行UTF8编码,但结果相同,为空白页。有人能解释一下吗?

json\u encode
对字符编码敏感。如果不能处理编码,它将失败<代码>打印\r不可用。它会很高兴地打印出你给它的任何东西


只有当源数据中的字符串被编码为ISO-8859-1时,
utf8\u encode
fix才会起作用。假设这是真的,它应该会起作用。确保你这样做

在第二个示例中,您没有使用
PDO::FETCH_ASSOC
。删除该选项是否允许您
json\u encode()
结果?不,删除该选项时我也会得到一个空白页。等等,您是否因为没有打印json\u编码的结果而得到一个空白页
print\u r
prints to screen,
json\u encode
没有。我正在对结果进行回显。你为什么认为这是编码问题?您的数据是什么样子的?