php do while循环保持表无限循环

时间:2017-01-03 13:53:31

标签: php while-loop do-while

我在localhost中执行了这段代码,但它无限循环表。我该如何解决?有什么我应该补充的吗?循环永远不会停止,直到我单击x按钮停止加载页面。     

 //fetching data in descending order (lastest entry first)
 //$result = mysql_query("SELECT * FROM users ORDER BY id DESC"); // mysql_query is deprecated
 $query=("SELECT * FROM songs ORDER BY songid DESC"); 
$result = mysql_query($query) or die(mysql_error());
?>

 <html>
 <head>    
  <title>View</title>
</head>

 <body>
     <a href="add.php">Add New Data</a><br/><br/>

<table width='80%' border=0>
    <tr bgcolor='#CCCCCC'>
        <td>Song ID</td>
        <td>Title</td>
        <td>Artist</td>
        <td>Genre</td>
        <td>Language</td>
        <td>Lyrics</td>
        <td>Updated by</td>
    </tr>
    <?php 
    $counter == 1;
    $res = mysql_fetch_array($result);
    //while($res = mysql_fetch_array($result)) { // mysql_fetch_array is deprecated, we need to use mysqli_fetch_array 
    do {         
        echo "<tr>";
        echo "<td>".$res['songid']."</td>";
        echo "<td>".$res['title']."</td>";
        echo "<td>".$res['artist']."</td>";    
        echo "<td>".$res['genre']."</td>";    
        echo "<td>".$res['language']."</td>";    
        echo "<td>".$res['lyrics']."</td>"; 
        echo "<td>".$res['update']."</td>";             
        echo "<td><a href=\"edit.php?id=$res[songid]\">Edit</a> | <a href=\"delete.php?id=$res[songid]\" onClick=\"return confirm('Are you sure you want to delete?')\">Delete</a></td>";        
    } while($res)
    ?>
</table>

2 个答案:

答案 0 :(得分:1)

您在循环结束时缺少$res = mysql_fetch_array($result);。目前,while语句检查$ res是否(仍然)真实,但它永远不会改变,所以它总是评估为TRUE(因此,循环将始终继续运行)。

答案 1 :(得分:0)

我正准备写与Daan Meijer相同的东西。 res永远不会更改,因此对于while语句,它始终为true。我只想补充一点,mysql_fetch_assoc($result)的工作速度比mysql_fetch_array($result)快一点。因此,如果您拥有一个大型数据库,mysql_fetch_assoc($result)是更好的选择。