Бесконечный цикл while - PullRequest
       6

Бесконечный цикл while

1 голос
/ 30 августа 2010

У меня возникают некоторые проблемы с базовым циклом PHP while, каждый раз, когда я запускаю файл test_post.php в своем браузере, я получаю бесконечный цикл и понятия не имею, что мне не хватает!

Вот мой PHP-код:

<?php

 mysql_connect('localhost', 'admin', '1234') or die(mysql_error());
 mysql_select_db('json');
 $test = mysql_query('SELECT user,pass FROM login WHERE user="john"');

 $row = mysql_fetch_array($test, true);

 while($row) {
  echo "Username: ".$row['user']." Password: ".$row['pass']."<br />";
 };
?>

У меня есть три записи в моей базе данных MySQL, которые соответствуют этим критериям, но он продолжает бесконечно повторять первую из них!

Я пытаюсь получитьмассив из базы данных, а затем преобразовать его в объект JSON, который можно передать обратно для заполнения раскрывающегося списка.

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

Моя структура базы данных состоит из одной таблицы с именем login, которая содержит 3 столбца, а именно id, user и pass, внутри которых я имею3 записи с пользовательским значением 'john'.

Есть идеи, что может быть не так?

PS: я не могу применить форматирование кода к своему сообщению дляпочему-то панель инструментов пропала!

Ответы [ 4 ]

10 голосов
/ 30 августа 2010

Как упоминает @froadie, вы никогда не измените $row, поэтому он всегда будет иметь значение true (и, следовательно, бесконечный цикл).

То, что я думаю , вы хотите:

while ($row = mysql_fetch_array($test, true)) {

Либо это, либо вы можете обновить его в строке:

$row = mysql_fetch_array($test, true));

while ($row) {
    //... do your echo here

    $row = mysql_fetch_array($test, true));
}

Но сутьв том, что вам нужно сделать что-то внутри цикла while, иначе у вас всегда будет бесконечный цикл ...

9 голосов
/ 30 августа 2010

Ничего не меняется $row в цикле, поэтому while($row) постоянно оценивается как true

7 голосов
/ 30 августа 2010

Использование while($row = mysql_fetch_array($test, true))

Это действительно обновит вас.

5 голосов
/ 30 августа 2010

$row - это то же самое значение.Попробуйте переназначить его в while ().

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