【发布时间】:2015-03-31 20:22:45
【问题描述】:
我有一个奇怪的问题。我有一个简单的 PHP 脚本,它使用 PDO 从数据库中获取所有国家/地区,然后将结果作为 json 返回。当我使用 fetch 函数而不是 fetchAll 时,一切都按预期工作。当我 print_r 时,数据就在那里。
不起作用:
$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来自哪段代码?两者都一样吗? -
fetch() 应该只返回下一个结果行...
-
如您所见,fetch() 和 fetchAll() 返回不同的数据集。很难说出你在问什么。
-
我的问题应该更清楚。我知道 fetch 返回下一行,当我使用 json_encode 并返回数据时,这非常有效。我得到 json 格式的下一行。问题是当我使用 fetchAll 从数据库中获取所有国家/地区时。我可以使用 print_r 查看查询结果,一切都按预期进行,但是当我使用 json_encode 时,我得到一个空白屏幕。这对我来说毫无意义。