使用PHP和PDO在SQL客户端中查询不返回任何行


Query working in SQL client returns no row using PHP and PDO

我真的很挠头,因为我试图弄清楚为什么一个查询在MySQL客户端完美工作并返回适当的结果,当PDO提供时没有效果。我的查询是:

SELECT id, title, img 
FROM blog_posts JOIN blog_img 
ON blog_posts.id = blog_img.id_post
WHERE id='1';

和我的PHP/PDO代码是:

$query = $this->dbconn->get_db_access()->prepare("SELECT id, title, img 
                                                  FROM blog_posts JOIN blog_img 
                                                  ON blog_posts.id = blog_img.id_post 
                                                  WHERE id=:id");
$query->bindParam(":id", $id);
$result = $query->fetch(PDO::FETCH_ASSOC);
print_r($result);

没有抛出PDOException,但$result数组为空。有人能解释一下吗?我做错了什么吗?是否有一种方法来"检查"绑定后的"最终"SQL代码,并在它被扔进去,让我确保一切正常?

实际上并没有执行准备好的语句。您必须在尝试检索数据之前执行它。

试试这样写:

$sql = "SELECT id, title, img 
FROM blog_posts JOIN blog_img 
ON blog_post.id = blog_img.id_post 
WHERE id=:id";
$stmt = $this->dbconn->get_db_access()->prepare($sql);
$stmt->bindParam(':id', $id);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);

注意prepare()将返回一个PDOStatement对象。然后将参数绑定到pdostatement对象,并将准备好的语句execute()

最后使用fetch()得到结果。