无限的PHP while循环

时间:2010-08-30 14:56:12

标签: php mysql json

我在使用基本的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:由于某些原因我无法将代码格式应用到我的帖子,工具栏已经消失了!

4 个答案:

答案 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()中重新分配它。