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

mik*_*ike 0 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]);
     }
  }
Run Code Online (Sandbox Code Playgroud)

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

Bol*_*ock 5

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

while (($fileIds = mysql_fetch_array($images, MYSQL_NUM )) !== false) {
  echo $fileIds[0];
}
Run Code Online (Sandbox Code Playgroud)

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