我刚刚学会了如何使用PDO数据库查询,但我的最新查询由于某种原因无法正常工作。我所有的其他查询都包含数组和while循环,但我不认为这个也需要,所以我可能只需要以某种方式更改查询结构。
$stm = $pdo->prepare("SELECT H.N, H.URL, H.Title, H.Subtitle,
H.Site, H.MetaTitle, H.MetaDesc, H.KW, H.Live, A.Article, A.Pagedex
FROM 1_home_pages H
LEFT JOIN 1_home_articles A ON A.Site = H.Site
WHERE H.URL = :MySection AND H.Site = :MySiteId AND H.Live = 1 AND A.Site = :MySiteId AND A.Section = :MySection");
// $stm->execute();
$stm->execute(array(
'MySiteId'=>$MySiteID,
'MySection'=>$MySection
));
$data = $stm->fetchAll();
我添加了$ data = $ stm-> fetchAll();这一行,它现在可用 - 作为一个数组。下面的foreach声明在一个乱七八糟的混乱中显示一切......
foreach($data as $row) {
print_r($row);
}
要转义数组并一次只显示一个项目,我尝试了以下操作:
$Content = $data['Article'];
echo $Content;
但它没有显示任何内容。谁能告诉我解决方案?
答案 0 :(得分:1)
我不知道你在发布这个问题时是否输错了,或者这是你的源代码中的拼写错误:你有:MySection,但在执行时你写了MySection(没有冒号)。更重要的是,这一行:
WHERE H.URL = :MySection
AND H.Site = :MySiteId
AND H.Live = 1
AND A.Site = :MySiteId
AND A.Section = :MySection");
您在一个语句中使用了多个具有相同名称的参数。不知道这是否是一种正确的方法,因为我从来没有这样做过。我建议你尝试使用不同的参数名称,看看是否有帮助。另外,你是什么意思'但我的最新查询由于某种原因不起作用。 ?它返回了什么?它有什么回报吗? fetchAll返回多个行,这就是你得到数组的原因。
而不是$data = $stm->fetchAll();
使用$data = $stm->fetch();
。它将从您的查询返回下一行。