PDO fetchAll() - json_encode在使用JOIN时不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PDO fetchAll() - json_encode在使用JOIN时不起作用相关的知识,希望对你有一定的参考价值。

我正在使用PDO从表中获取所有行:

$pdo = new PDO('mysql:host=127.0.0.1;dbname=learning', 'root', '');

$query = $pdo->preapre("
    SELECT * 
    FROM people 
    INNER JOIN city
    ON 
    people.id = city.person_id
");
$query->execute();

$people = $query->fetchAll(PDO::FETCH_ASSOC);    

现在,在这一点,如果我print_r这个$people变量我得到一个多维数组,其中包含该表中的所有行:

Array
(
    [0]=>Array
        (
        [id] => 1
        [name] => Emma
        [city] => New York
        )
    [1]=>Array
        (
        [id] => 2
        [name] => John
        [city] => Los Angeles
        )
    //and so on
)

但如果我想json_encode $people变量然后回应它我得到一个空白屏幕:

$j = json_encode($people);
echo $j;

我想我做错了但我不明白什么,有人可以帮我理解并解决这个问题吗?

谢谢! :d

UPDATE

关于使用var_dump

var_dump($j);

我越来越:

bool(false)

P.S我应该提到我将查询更改为INNER JOIN - 没有INNER json_encode工作

答案

您必须在charset连接中将pdo设置为UTF8:

$pdo = new PDO('mysql:host=127.0.0.1;dbname=learning;charset=UTF8', 'root', '');
//your code

以上是关于PDO fetchAll() - json_encode在使用JOIN时不起作用的主要内容,如果未能解决你的问题,请参考以下文章

PDO中获取结果集之fetchAll()方法详解

使用 PDO 的 fetchAll 辅助函数

PDO->fetchAll() 在远程服务器上返回空数组

MySQL PDO fetchAll作为格式的数组

PDO fetchAll() - json_encode在使用JOIN时不起作用

PDO fetchAll 数组到一维