PDO fetchAll возвращает пустой массив, но rowCount возвращает реальный результат

77
9

У меня есть этот код:

    $json = array();
$hoy = date("Y-m-d");
$consulta = "SELECT e.*,s.sal_nombre, concat(eve_titulo, ' - ',sal_nombre) as title FROM evento e, sala s where s.sal_id=e.sal_id ORDER BY id";

// conexión bbdd
try {
$bdd = new PDO('mysql:host=localhost;dbname=prueba2', 'root', '');
} catch(Exception $e) {
exit('Unable to connect to database.');
}

//ejecutamos consulta
$resultado = $bdd->query($consulta) or die(print_r($bdd->errorInfo()));

// enviamos el resultado codificado en json a la página que lo llama
echo json_encode($resultado->fetchAll(PDO::FETCH_ASSOC));

$result = $resultado->rowCount();
print_r($result);

при печати результата он печатает 4, что является правильным результатом, но json_encode ничего не возвращает, и если я делаю print_r ($resultado-> fetchAll());

он возвращает пустой массив

спросил(а) 2021-01-25T17:40:20+03:00 5 месяцев назад
1
Решение
77

Проблема возникает из-за того, что возвращенные данные не кодируются в utf-8 как это требуется json_encode.

Чтобы исправить это, атрибут charset=utf8 должен быть добавлен в DSN PDO.

ответил(а) 2021-01-25T17:40:20+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема