在SQL客户机中使用PHP和PDO的查询不返回任何行
我真的抓挠了我的头,因为我试图弄明白为什么一个在MySQL客户机中完美工作并返回正确结果的查询在PDO反馈时没有效果。我的问题是:在SQL客户机中使用PHP和PDO的查询不返回任何行,php,pdo,Php,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
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
对象。然后将参数绑定到pdostation对象,并execute()
准备好的语句
最后,您可以使用
fetch()
获得结果,可能是因为有两个不同的查询<当查询运行时,$id
的值是多少?@War10ck实际上这段代码位于foreach
中,因此每次$id
都有不同的id值,这是正确的,因此不会“导致查询失败”。你有那个“blog\u post”吗实际代码中的输入错误?@Barmar nope,不是这样,我一定是在手动复制查询时输入的。。。马上修好!谢谢,是的,谢谢。它就像一个符咒。