PHP MYSQL Бесконечный цикл - PullRequest
1 голос
/ 10 июня 2010

У меня проблема с моим скриптом php / mysql.Он должен выводить цикл while только один раз, но я получаю неограниченное количество циклов и бесконечную страницу.

$query = mysql_query("SELECT * FROM users WHERE username ='".base64_encode($_SESSION['username'])."' LIMIT 1"); 
$result = mysql_fetch_array($query);
   if(empty($result)){
      echo "No user... Error";
   }else{
   while($row = $result){
   ?>
<a href="index.php?user=<?=$row['id']?>"><?=base64_decode($row['username'])?></a> | <a  href="javascript:void(0);" id="logout">Logout</a>
   <?php
   }
}

Я пробовал подобный скрипт с этими же строками, и он прекрасно работает

  $result = mysql_fetch_array($query);
   if(empty($result)){
      echo "No user... Error";
   }else{
   while($row = $result){
      //Something
   }
}

петля http://img249.imageshack.us/img249/70/endlessloop.png

Ответы [ 2 ]

2 голосов
/ 10 июня 2010

Посмотрите на:

http://php.net/manual/en/function.mysql-fetch-array.php

В примере:

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result)) {
    printf("ID: %s  Name: %s", $row[0], $row[1]);  
}

mysql_fetch_array получает массив из следующей строки ИЛИ false, если ее нетleft.

$ row = $ result создаст бесконечный цикл, когда $ result - это все, что не приведено к значению false

ДОПОЛНИТЕЛЬНО

вы можете использовать mysql_num_rows [http://php.net/manual/en/function.mysql-num-rows.php], чтобы проверить, возвращены ли нулевые результаты:

$result = mysql_query("SELECT id, name FROM mytable");

if(mysql_num_rows($result) {
    while ($row = mysql_fetch_array($result)) {
        printf("ID: %s  Name: %s", $row[0], $row[1]);  
    }
} else {
    // NO ROWS RETURNED
}
0 голосов
/ 10 июня 2010

$row = $result - это не сравнение, а задание, и оно всегда будет истинным.

Вам нужно поместить mysql_fetch_array в цикл while.

while($row = mysql_fetch_array($query)){
   ?>
<a href="index.php?user=<?=$row['id']?>"><?=base64_decode($row['username'])?></a> | <a  href="javascript:void(0);" id="logout">Logout</a>
   <?php
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...