PDO之谜(No while loop)

时间:2013-12-30 01:13:21

标签: pdo

我刚刚学会了如何使用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;

但它没有显示任何内容。谁能告诉我解决方案?

1 个答案:

答案 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();。它将从您的查询返回下一行。