我真的摸不着头脑,因为我试图弄清楚为什么一个查询在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代码,以便确保一切正常?
答案 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()
获得结果。