迭代foreach循环仅工作一次

时间:2018-11-30 16:47:40

标签: php postgresql

$sql = "SELECT * FROM table";
$rows = $db->prepare($sql);
$rows->execute();

foreach ($rows as $row) {
   echo($row);
}

echo("<br/>");
foreach ($rows as $row) {
   echo($row);
}

如果运行此命令,我将获得arrayarrayarray(...)的第一行,但第二行为空。有什么办法可以运行两次?

编辑:我在这篇文章中有一个错字,原来的问题仍然存在

2 个答案:

答案 0 :(得分:1)

strcpy(lo, message+20); ... strcpy(message, lo); 是一个准备好的语句对象。该对象实现了$rows,因此您可以使用Traversable来获取结果,而不必直接调用fetch方法。但是,一旦获取了结果,便无法再次获取它们。您将需要再次执行查询,或者在第一次迭代过程中将结果存储在数组中,然后第二次使用存储的结果,如下所示:

foreach

此外,我不确定$sql = "SELECT * FROM table"; $rows = $db->prepare($sql); $rows->execute(); foreach ($rows as $row) { $stored[] = $row; // save the rows in an array echo($row); } echo("<br/>"); foreach ($stored as $row) { // iterate the saved array instead of the statement echo($row); } 在这里的工作方式,因为我会假设echo($row)是一个数组,但这不重要。

答案 1 :(得分:0)

foreach ($row as $row) {
   echo($row);
}

我觉得这是一个打字问题,应该是:

foreach ($rows as $row) {
   echo($row);
}

就像您在那上面的循环一样。

相关问题