gpt4 book ai didi

php - 使用 PHP 将 sql 数据转换为 json 数组给出 HTTP ERROR 500

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

我正在尝试使用从第一个表中获取的 token 从两个数据库表中获取数据 我试图在第二个表中获取团队名称。然后将其添加到一个数组中以最终打印一个 json 数组。看看下面我的代码:

$dbh = new PDO("mysql:host=localhost;dbname=dbnameabc", $username, $password);

$sql = "SELECT * FROM chatbox order by id desc";

$result = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
$return = [];

foreach ($result as $row) {

$postid = $row['id'];
$token = $row['token'];
$gpslat = $row['gpslat'];
$gps = $row['gps'];
$postmsg = $row['msg'];

//echo $postid + " is id " + $token + " is token " + $postmsg + " is postmsg " + $gps + " is gps and " + $gpslat;

$team;

$sqlx = "SELECT * FROM logintable WHERE token='$token'";
$resultx = $dbh->query($sqlx)->fetchAll(PDO::FETCH_ASSOC);


foreach ($resultx as $rowx) {
$team = $rowx['name'];

}

$return[] = [
'postmsg' => $postmsg,
'token' => $token,
'gps' => $gps,
'gpslat' => $gpslat
];

}
$dbh = null;

header('Content-type: application/json');
echo json_encode($return);

然而,执行上述操作会抛出错误 HTTP ERROR 500。接下来我要提到的是我在上面评论的 echo 语句给了我一个随机数,如 10.1421321。那么问题是什么?类似的代码在我测试过的另一张表上运行良好,但不知道为什么它不起作用。

更新:第二个查询中的连接有问题 ($resultx = $dbh->query($sqlx)->fetchAll(PDO::FETCH_ASSOC);) 因为第一个提供 $team 以外的字段工作正常,如果我不使用第二个查询加上团队名称,我可以打印 json 但如何让第二个工作?

最佳答案

json_encode函数没有问题。它工作正常。

问题是这一行:$resultx = $dbh->query($sqlx)->fetchAll(PDO::FETCH_ASSOC);

您正在对查询结果调用 fetch all,该查询失败并返回 false。尝试在控制台/GUI 中运行 SQL 查询并查看输出是什么。

如果您想查看 PDO 返回的特定错误,请使用以下函数: http://php.net/manual/en/pdo.errorinfo.php

同时将您的代码更改为两行,以检查查询是否有效:

$stmt = $dbh->query($sqlx);
if($stmt!=false){
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
}

关于php - 使用 PHP 将 sql 数据转换为 json 数组给出 HTTP ERROR 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38425476/

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