本人初学php,发现php里面的数组好奇怪啊!这是一个网页测试代码。<html>
<head>测试数据库连接</head>
<body>
<hr size=20 color=red>
<?php
  $link=mysql_connect('localhost','root','root') or die("could not connect!".mysql_error());
  mysql_select_db('db') or die("could not select");
  $result=mysql_query('select user_login from user') or die("could not query".mysql_error());
 while($value=mysql_fetch_row($result)){
 echo $value[0];
?>
<br>
<?php
}
mysql_free_result($result);
mysql_close($link);
?>
</body>
</html>
这样竟然可以把查询到的结果里面的5条信息全部输出来。
$value 是一个数组啊,可是我只是echo $value[0]啊,按理说只会输出 第一个数据啊,为什么5个全部输出了啊?
还有,如果我用list($value1,$value2)=mysql_fetch_row($result),然后用echo $value1输出会提示 Notice: Undefined offset...但是也可以把五组值全部输出,请求大神帮我解疑惑啊!!!小弟感激不尽

解决方案 »

  1.   

    因为你将$value写入while循环了,所以会全部输出。
    将$value=mysql_fetch_row($result);print_r($value);写在while上面并打印出来,看效果。另你的目的是什么?
      

  2.   

    你在 while($value=mysql_fetch_row($result)) 中
    输出 echo $value[0];
    当然是输出全部的结果了你的sql指令为 select user_login from user 只取得一列结果
    list($value1,$value2)=mysql_fetch_row($result) 需要两列,当然也会提示的
      

  3.   

    因为你查出5条记录,那么while会执行五次,所以echo $value[0];会输出5个,除非你echo $value[0];exit;这样就会在第一次输出时候中断了
      

  4.   

    你while循环执行 把所有结果就输出了
      

  5.   

    谢谢啦,我就是测试一下连接数据库,然后练练手。哈哈,一语道破啊,我知道了。while循环会把$result的指针逐个往后指。$result里面有多少条记录就会有多少个大小为1的$value数组!谢谢了。刚刚看了太久,看糊涂了
      

  6.   

    mysql_fetch_row这个函数有个特点就是每取一次数据就会把指针指向下一条数据,所有循环几次就取几条。
    这跟文件内容操作fgets()一样。
      

  7.   

    谢谢,知道了。$value2越界了哈哈哈