【发布时间】:2014-08-07 04:04:33
【问题描述】:
我将我的代码切换到 PDO 并且我几乎到了,除了这部分,查询的所有结果都应该使用 foreach 语句显示。我知道数据被正确提取并正确存储在 $row2 中。
我需要做的是从 $results2 中获取 'position' 变量并将其加 1,然后运行位置等于该新数字的 foreach 循环...
在我切换到 PDO 之前,我的代码运行良好,并且确实正确显示了 2 个预期结果:
$cont = $results2[0]->position;;
$cont++;
foreach ($results2 as $resulting) {
if ( $results2[0]->position = $cont )
{
echo "<hr><br><br>" . $resulting->text . " " . " <b>Suggested by: $resulting-
>display_name </b><br>|<b> <a href=\"$url\">Approve this contribution</a></b> | <b><a
href=\"$url\">delete this suggestion</a></b> |";
}
}
但是现在,foreach 在转换为 PDO 之后只返回了两次相同的第一个结果,看起来像这样:
//新的 PDO 代码——不显示两个结果:
$results2->execute();
$row2 = $results2->fetchAll(PDO::FETCH_ASSOC);
$cont = $row2[0]['position'];
$cont++;
foreach ($row2 as $resulting) {
if ( $row2[0]['position'] == $cont )
{
echo "<hr><br><br>" . $row2[0][text] . " " . " <b>Suggested by:" . $row2[0]
[display_name] . "</b><br>|<b> <a href=\"$url\">Approve this contribution</a></b> | <b>
<a href=\"$url/?WID=$resulting->WID\">delete this suggestion</a></b> |";
}
}
【问题讨论】:
-
不应该有两个等号用于比较而不是赋值吗?
-
如果我将 = 更改为 == 我没有得到任何结果。但是,如果我将其保留为 =,那么我会得到第一个结果。
-
您确实意识到 if 语句没有任何意义?您只是在分配值并返回true,因此会发生回声
-
好吧,事实上,在我切换到 PDO 之前,我的代码运行良好。在我的帖子中查看我在 ADDiTIONAL 下的代码,以了解更改为 PDO 之前的工作情况。添加等号不知何故没有返回结果而不是正确的结果。
-
我认为问题是在执行 PDO 时循环遍历 foreach 中定义的结果时我不能使用 $resulting?