Почему мой цикл while никогда не заканчивается - PullRequest
0 голосов
/ 17 декабря 2010

Я пытался представить свои данные из моей базы данных, используя PHP. Мои циклы пока продолжаются.

  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 ]

5 голосов
/ 17 декабря 2010

Вам необходимо вызвать функцию в условии цикла, чтобы ее можно было оценить несколько раз. Прямо сейчас вы просто вызываете его только один раз, и PHP сообщит, что нужно выбрать только первую строку. Если это не ложь (т. Е. MySQL вернул хотя бы одну строку), ваш цикл while будет бесконечным.

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

Вызывая его каждый раз, когда проверяется условие цикла, PHP внутренне продвигает указатель набора результатов, чтобы он мог покрыть все строки в наборе результатов. В конце концов эта функция вернет false и завершит цикл.

3 голосов
/ 17 декабря 2010
 while($fileIds != false){
  echo($fileIds[0]);
 }

Вы ничего не делаете для продвижения поля цикла внутри цикла.У вас есть строка сразу перед циклом, который устанавливает $fileIds, но, когда все работает, он вызывается только один раз, потому что он находится вне цикла.

Вам нужно поставитьчто внутри цикла, вероятно, внутри самого while (), как показано ниже:

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...