PHP:PDO查询没有返回结果,但同样的查询在phpmyadmin中返回4个结果?

时间:2015-06-18 17:02:13

标签: php mysql pdo

我编写了一个查询来返回帖子的所有评论,不包括该帖子中的被屏蔽用户。我已经在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用户,这是否会尖叫?

1 个答案:

答案 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);

我希望这会有所帮助。