PHP MYSQL无限循环

时间:2010-06-10 11:39:04

标签: php mysql loops

我的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
   }
}

loop http://img249.imageshack.us/img249/70/endlessloop.png

2 个答案:

答案 0 :(得分:2)

看看:

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。

<$> $ 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
}

答案 1 :(得分:0)

$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
   }