0

我真的很摸不着头脑,因为我试图弄清楚为什么在 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);

NoPDOException被抛出,但$result数组为空。请问有人能解释一下吗?有什么我做错了吗?有没有办法在绑定之后和被抛出之前“检查”“最终”的 SQL 代码,以确保一切正常?

4

1 回答 1

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().

于 2013-05-16T19:15:21.083 回答