我正在使用带有FOR JSON PATH的SQL查询,该查询应给出JSON结果。但是,我不确定如何在PHP中返回结果。该命令可以完美地用作SQL命令,但是在以预备语句执行时会遇到一些问题。
这是我的查询...
$getUsersTeams = $this->dbConn->prepare("SELECT T.Id AS Id, T.TeamName AS TeamName, T.TeamImage AS Image, T.Description AS Description, T.IsActive AS IsActive, TU.IsAdmin AS IsAdmin,
( SELECT TU.UserId AS id, U.FirstName, U.LastName, U.DisplayPicture
FROM TeamUsers TU
INNER JOIN Users U ON TU.UserId = U.Id
WHERE TU.TeamId = T.Id
FOR JSON PATH
) AS [Members]
FROM TeamUsers TU
INNER JOIN Teams T ON T.Id = TU.TeamId
WHERE UserId = :userId
FOR JSON PATH, INCLUDE_NULL_VALUES, ROOT('Teams')");
$getUsersTeams->bindParam(':userId', $this->userId);
if(!$getUsersTeams->execute())
{
return false;
}
$usersTeamsResult = $getUsersTeams->fetch(PDO::FETCH_ASSOC);
header("content-type: application/json");
echo $usersTeamsResult;
exit;
我尝试进行fetch,fetchall和while循环来获取数据。
在我尝试过的所有3种方法中,它总是仅回显“ Array”。虽然, 如果我使用fetchAll ...
echo json_encode($usersTeamsResult);
...然后结果至少回显,但是格式不正确,就像这样...
"JSON_F52E2B61-18A1-11d1-B105-00805F49916B": "{\"Teams\":[{\"Id
\":1,\"TeamName\":\"GroupName1\",\"Image\":null,\"Description\":null,
\"IsActive\":true,\"IsAdmin\":false,\"Members\": .....ETC "}]}]}"
我没有包括整个答复,但这是最基本的。 我已经尝试过用反斜杠删除斜杠,但这是行不通的。
我只想获取响应并按原样回显。有谁知道我怎么能做到这一点?谢谢!
答案 0 :(得分:0)
我通过这样做使它起作用,不知道为什么我必须经历所有这些才能使其起作用,但是是的...
i =1
if i:
print True
else:
print False
然后$ usersTeams是格式正确的关联数组,然后可以使用json_encode进行编码。