在FOR循环中迭代FOREACH数组

时间:2015-05-14 12:17:12

标签: php mysql pdo

过去一周我一直在努力学习PHP,而且我遇到了一个特定的问题。请原谅我措辞严厉的标题,因为我还没有掌握行话。

这是我的代码:

$query = "SELECT $tablefields FROM $tablename";
$sth = $dbconn->prepare($query);

for ($x = 1; $x <=3; $x++){
    echo '<br /> This is an iteration ',$x;

      $sth->execute();
      foreach ($sth->fetchall() as $row) 
      { 
      $results = $row[$tablefields];
      echo $results, '<br />'
      ; 
      }

}

我希望代码输出如下:

This is iteration No. 1
Apple
Orange
Banana
Kiwi

This is iteration No. 2
Apple
Orange
Banana
Kiwi

This is iteration No. 3
Apple
Orange
Banana
Kiwi

现在,上面的代码完成了这项工作,但是当我想将迭代次数增加$ x&lt; = 20,并将水果选项增加到20个项目时,页面渲染速度明显减慢。我想知道是不是因为代码是在20次查询MySQL数据库?有没有更好的方法来构建代码,以便它更有效?

3 个答案:

答案 0 :(得分:1)

$x=1;
foreach ($sth->fetchall() as $row){ 
      echo '<br /> This is an iteration ',$x;
      $results = $row[$tablefields];
      echo $results; 
      $x++;
}

您可以使用上面的代码,而不是使用for循环和foreach。

答案 1 :(得分:0)

因为你做了20次MySQL查询。您可以缓存结果,然后使用缓存循环。例如:

$query = "SELECT $tablefields FROM $tablename";
$sth = $dbconn->prepare($query);
$sth->execute();

$result = "";
foreach ($sth->fetchall() as $row) {
    $result .= $row[$tablefields] . "<br>";
}

for ($x = 1; $x <=3; $x++){
    echo '<br /> This is an iteration ' . $x;
    echo $result;
}

答案 2 :(得分:0)

这就是事情..

我不知道您执行查询三次或每次循环运行的原因。但这是对你的代码的一点改进。看一看。

$query = "SELECT $tablefields FROM $tablename";
$sth = $dbconn->prepare($query);
$sth->execute();
$data = "";
foreach ($sth->fetchall() as $row) {
   $data .= $row[$tablefields] . "<br>";
}

for ($x = 1; $x <=3; $x++){
   echo '<br /> This is an iteration ' . $x;
   echo $data;
}