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

时间:2013-05-16 18:58:53

标签: php pdo

我真的摸不着头脑,因为我试图弄清楚为什么一个查询在MySQL Client中完美运行并返回正确的结果,在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代码,以便确保一切正常?

1 个答案:

答案 0 :(得分:1)

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

尝试这样的事情:

$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个对象。然后,将参数绑定到PDOStatment对象,并execute()准备好的语句。

最后,您使用fetch()获得结果。