【问题标题】:PDO fetchAll() - json_encode doesn't work when using JOINPDO fetchAll() - 使用 JOIN 时 json_encode 不起作用
【发布时间】:2018-08-25 18:40:00
【问题描述】:

我正在使用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

更新

关于使用var_dump

var_dump($j);

我明白了:

bool(false)

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

【问题讨论】:

标签: php json pdo


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-03-31
    • 2016-04-16
    • 2013-02-05
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 2018-11-14
    • 2016-08-20
    • 1970-01-01
    相关资源
    最近更新 更多