【发布时间】:2013-11-01 16:09:42
【问题描述】:
我正在尝试使用 PDO 语句嵌套 foreach 循环(这以前在 mysql 中对我有用,顺便说一句)。第一个示例有效,第二个示例无效。但是我不希望每次都运行 SQL 查询(这不是 PDO 的重点吗?)并且更喜欢使用更像示例 2 的东西。但是,它不会将循环“嵌套”在另一个循环中,似乎,而是先运行,然后再运行。
示例 1)
foreach($db->query('SELECT country FROM db GROUP BY `country`') as $row1) {
echo $row1['country']."<br/>";
foreach($db->query('SELECT * FROM db') as $row2) {
if ($row1['country']==$row2['country']){
echo $row2['name']."<br/>";
}
}
}
示例 2)
$cntry = $db->query('SELECT country FROM db GROUP BY `country` ');
$rslts = $db->query('SELECT * FROM db');
foreach ($cntry as $row1) {
echo "<div id='".$row1['country']."'>".$row1['country']."<br/>";
foreach($rslts as $row2) {
if ($row1['country']==$row2['country']){
echo $row2['name']."<br/>";
}
};
echo "</div>";
}
【问题讨论】:
-
我需要“倒带”结果集吗?或者其他的东西?我看过类似的例子,但不是很清楚
-
我发现了两种对我有用的方法:1)添加 ->fetchAll();在查询 2) 的末尾添加 $rslts->execute();在只返回一次结果的循环结束时,“重新缠绕”结果。任何关于这些工作的原因、最佳实践等的 cmet 都会非常有用。