我在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>
答案 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)
是更好的选择。