PDO fetchAll () - json_encode не работает при использовании JOIN - PullRequest
0 голосов
/ 25 августа 2018

Я использую 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 работал

1 Ответ

0 голосов
/ 25 августа 2018

Вы должны настроить charset на UTF8 в вашем pdo соединении:

$pdo = new PDO('mysql:host=127.0.0.1;dbname=learning;charset=UTF8', 'root', '');
//your code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...