while($r=mysql_fetch_array($result)){}
是循环取mysql_fetch_array($result)记录集中的每一条记录而
while($r){}
当然是死循环了,$r始终是取mysql_fetch_array($result)第一条记录,如果第一条记录不空就一直循环下去了

解决方案 »

  1.   

    因为$r=mysql_fetch_array($result);为真
    所以 while($r) 始终条件为真,
    因此会出现死循环。
    用while($r=mysql_fetch_array($result))
    程序循环一次后,数据库的指针(还是叫别的?)会向下移一个,直到记录末尾,$r也就为假了。循环结束。
      

  2.   

    从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,偏移量从 0 开始。 
    while($r=mysql_fetch_array($result)) 每一次读取偏移量自加一,直到结束,可以循环读下去。
    while($r)这个$r只要是不为false程序就无限的执行下去。