У меня странная проблема. У меня есть простой PHP-скрипт, который использует PDO для получения всех стран из базы данных, а затем возвращает результат как json. Когда я использую функцию fetch вместо fetchAll, все работает так, как ожидалось. Когда я печатаю_r, данные там.PHP PDO fetchAll тогда json_encode не работает
Не работает:
$sql = "SELECT * FROM countries";
if($stmt = $_db->prepare($sql))
{
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
header("content-type:application/json");
echo json_encode($data);
exit();
}
Работы:
$sql = "SELECT * FROM countries";
if($stmt = $_db->prepare($sql))
{
$stmt->execute();
$data = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
header("content-type:application/json");
echo json_encode($data);
exit();
}
Результаты print_r:
Array
(
[0] => Array
(
[id] => 1
[name] => Afghanistan
)
[1] => Array
(
[id] => 2
[name] => Åland Islands
)
[2] => Array
(
[id] => 3
[name] => Albania
)
....
[248] => Array
(
[id] => 249
[name] => Zimbabwe
)
)
1
Что делает первый код? Каким фрагментом кода является 'print_r'? Это одно и то же? – andrewsi
fetch() должен возвращать только следующую строку результата ... – thedouglenz
Как вы можете видеть, fetch() и fetchAll() возвращают разные наборы данных. Трудно сказать, что вы просите. –