我在使用基本的PHP while循环时遇到了一些麻烦,每次我在浏览器中启动test_post.php文件时,我都会得到一个永无止境的循环,我不知道我错过了什么!
这是我的PHP代码:
<?php
mysql_connect('localhost', 'admin', '1234') or die(mysql_error());
mysql_select_db('json');
$test = mysql_query('SELECT user,pass FROM login WHERE user="john"');
$row = mysql_fetch_array($test, true);
while($row) {
echo "Username: ".$row['user']." Password: ".$row['pass']."<br />";
};
?>
我的mySQL数据库中有三个符合该条件的条目,但它会无限循环遍历第一个条目!
我正在尝试从数据库中获取一个数组,然后将其转换为一个JSON对象,该对象可以传回以填充下拉列表。
我还尝试使用PHP的count函数来获取数组中的条目数量,以限制while循环执行的次数,但即使这样也会导致永无止境的循环。
我的数据库结构由一个名为login的表组成,其中包含3列,即id,user和pass,其中我有3个条目,其'user'值为'john'。
关于什么可能出错的任何想法?
PS:由于某些原因我无法将代码格式应用到我的帖子,工具栏已经消失了!
答案 0 :(得分:10)
正如@froadie所提到的,你永远不会改变$row
,所以它总是会评估为true
(因此无限循环)。
我想要你想要的是:
while ($row = mysql_fetch_array($test, true)) {
要么是这样,要么你可以内联更新它:
$row = mysql_fetch_array($test, true));
while ($row) {
//... do your echo here
$row = mysql_fetch_array($test, true));
}
但关键是你需要在while循环中对它做某些东西,否则你总会有一个无限循环......
答案 1 :(得分:9)
循环内没有任何更改$row
,因此while($row)
持续评估为真
答案 2 :(得分:7)
使用while($row = mysql_fetch_array($test, true))
那将为您实际更新。
答案 3 :(得分:5)
$row
是相同的值。尝试在while()中重新分配它。