【问题标题】:PHP MYSQL Endless LoopPHP MYSQL 无限循环
【发布时间】:2010-06-10 11:39:04
【问题描述】:

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

【问题讨论】:

    标签: php mysql loops


    【解决方案1】:

    看看:

    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
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 但是如果我想检查空请求,我必须做两个 mysql_fetch_array($query) 吗?
      • @Neb 如果要检查空结果,请使用if (mysql_num_rows($query) == 0)
      猜你喜欢
      • 1970-01-01
      • 2013-06-02
      • 2017-10-08
      • 2014-05-30
      • 2016-04-05
      • 1970-01-01
      • 2011-11-19
      • 2013-08-20
      • 1970-01-01
      相关资源
      最近更新 更多