Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL客户机中使用PHP和PDO的查询不返回任何行_Php_Pdo - Fatal编程技术网

在SQL客户机中使用PHP和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

我真的抓挠了我的头,因为我试图弄明白为什么一个在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
对象。然后将参数绑定到pdostation对象,并
execute()
准备好的语句


最后,您可以使用
fetch()

获得结果,可能是因为有两个不同的查询<当查询运行时,
$id
的值是多少?@War10ck实际上这段代码位于
foreach
中,因此每次
$id
都有不同的id值,这是正确的,因此不会“导致查询失败”。你有那个“blog\u post”吗实际代码中的输入错误?@Barmar nope,不是这样,我一定是在手动复制查询时输入的。。。马上修好!谢谢,是的,谢谢。它就像一个符咒。