为什么我的while循环永远不会结束

时间:2010-12-17 16:22:06

标签: php loops

我一直在尝试使用PHP从我的数据库中显示数据。我的while循环继续运行。

  function makeCollection(){
    $images = mysql_query("select file_id from images where collection_id = 1");
     //returns file_id

     $fileIds = mysql_fetch_array($images, MYSQL_NUM );
     //get file ids from $images into array

     while($fileIds != false){
      echo($fileIds[0]);
     }
  }

我有三个符合id = 1,2和3的对象(它是自动递增的)。不应该循环迭代然后在第三个之后停止?它只是为无穷大写'1'。

2 个答案:

答案 0 :(得分:5)

您需要在循环条件内调用该函数,以便可以多次计算它。现在你只调用一次,这将告诉PHP只获取第一行。如果它不是假的(即MySQL返回至少一行),你的while循环将是无限的。

while (($fileIds = mysql_fetch_array($images, MYSQL_NUM )) !== false) {
  echo $fileIds[0];
}

每次检查循环条件时调用它,PHP会在内部推进结果集指针,以便它可以覆盖结果集中的所有行。最终这个函数将返回false并终止循环。

答案 1 :(得分:3)

 while($fileIds != false){
  echo($fileIds[0]);
 }

你没有做任何事情来推进循环内的循环字段。在循环之前你有一行设置$fileIds,但事实上它只会被调用一次,因为它在循环之外。

你需要的是把它放在循环中,可能在while()本身内,如下所示:

while(($fileIds = mysql_fetch_array($images, MYSQL_NUM)) !== false) {
 ....
}

希望有所帮助。