我编写了一个查询来返回帖子的所有评论,不包括该帖子中的被屏蔽用户。我已经在phpmyadmin中测试了查询,我得到了给定帖子的4/5可能评论(其中1个用户被阻止)。
查询如下:
$query = "SELECT ent.Entity_Id, ent.Profile_Pic_Url, ent.First_Name, ent.Last_Name, ent.Last_CheckIn_Place, comments.Content
FROM checkin_comments AS comments
JOIN entity AS ent
ON comments.Entity_Id = ent.Entity_Id
LEFT JOIN friends AS f
ON ent.Entity_Id = :entityId
WHERE comments.Chk_Id = :checkInId
AND f.Category != 4
GROUP BY comments.Comment_Id
";
// Bind the parameters to the query
$data = Array(":checkInId" => (int)$checkInId, ":entityId" => (int)$userId);
如果我在phpmyadmin上运行查询,其值为1726
表示checkinId,1517
表示userId,我得到了预期结果,但在PHP中我得到0结果。我使用var_dump打印数据内容,它显示为:
array(2) {
[":checkInId"]=>
int(1726)
[":entityId"]=>
int(1517)
}
为什么我在PHP中遇到不同的结果?我所有其他查询都运行良好
编辑如果我将绑定变量换成数值,查询工作正常,这让我相信这是PDO将值绑定到查询的问题。当我执行绑定时,我使用我的PDO包装类,它执行以下方法:
public function fetchAll($query, $data = null)
{
$stmt = $this->prepareQuery($query, $data);
return $stmt->fetchAll();
}
private function prepareQuery($query, $data = null)
{
$stmt = $this->connection->prepare($query);
$stmt->execute($data);
return $stmt;
}
对于任何更有经验的PDO用户,这是否会尖叫?
答案 0 :(得分:-2)
我认为你没有在单引号中包含参数。试试这段代码
$query = "SELECT `ent`.`Entity_Id`, `ent`.`Profile_Pic_Url`, `ent`.`First_Name`, `ent`.`Last_Name`, `ent`.`Last_CheckIn_Place`, `comments`.`Content`
FROM `checkin_comments` AS `comments`
JOIN `entity` AS `ent`
ON `comments`.`Entity_Id` = `ent`.`Entity_Id`
LEFT JOIN `friends` AS `f`
ON `ent`.`Entity_Id` = ':entityId'
WHERE `comments`.`Chk_Id` = ':checkInId'
AND `f`.`Category` != 4
GROUP BY `comments`.`Comment_Id`
";
// Bind the parameters to the query
$data = Array(":checkInId" => (int)$checkInId, ":entityId" => (int)$userId);
我希望这会有所帮助。