我的 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://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
}
关于PHP MYSQL 死循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3013982/