gpt4 book ai didi

PHP fetchAll PDO::FETCH_OBJ 和 json_encode 返回无效 JSON

转载 作者:行者123 更新时间:2023-11-29 18:23:04 25 4
gpt4 key购买 nike

我尝试使用 PDO::FETCH_OBJjson_encode 从 MySQL 数据库中获取一些数据,但由于我添加了 DATE-MySQL 表中的字段。

这就是我的代码:

$app->get('/api/teams', function(Request $request, Response $response) {
$sql = "SELECT * FROM teams";

try {
$db = new db();

$db = $db->connect();

$stmt = $db->query($sql);
$teams= $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
echo json_encode($teams);

} catch(PDOException $e) {
echo '{"error": {"text": '.$e->getMessage().'}';
}
});

在我添加 DATE 字段之前,它工作得非常好,并且返回一个包含一堆对象的数组。现在它根本不返回任何数据。尽管如此,当我调用 /api/teams/25 时 - 我收到了正确的数据,即使有日期数据。因此,当我想立即接收所有团队/数据时,它“仅”会失败。

有人可以告诉我出了什么问题以及如何解决吗?

我还可以看出我尝试这样做:

foreach($teams as $team){
echo json_encode($team);
}

但是这返回了无效的 JSON 数据,这是一堆没有逗号分隔的对象

编辑

我的数据库架构如下所示,

id (int(11), primary_key, auto_increment)
team ( varchar(255) )
country ( varchar(255) )
league ( varchar(255) )
creation_day ( date )

** 编辑 2 **

foreach-示例返回的无效 JSON 如下所示:

{"id":"27", "Bayern München", "country":"Germany", "league": "Bundesliga, "creation_day": "2016-10-14"} {"id":"28", "Borussia Dortmund", "country":"Germany", "league": "Bundesliga, "creation_day": "2016-10-14"}

..等等

最佳答案

问题是您发出的不是一个 JSON 文档,而是几个被粉碎在一起的文档。那是无效的。只需这样做:

echo json_encode($teams);

关于PHP fetchAll PDO::FETCH_OBJ 和 json_encode 返回无效 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46413577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com