while($array=mysql_fetch_array($query)){  //我理解为把一条记录放在一个数组中
    foreach($array as $key => $value){              //遍历数组,来显示所有字段的值
      echo $key."=".$value."\t";

解决方案 »

  1.   

    问题A
    ----------------------------

      while($r=mysql_fetch_field($query)){
          echo $r->name." ";
      }问题B
    ------------------
    请你看看print_r($array)里面的元素都有哪些,不只是只有字段为键的.所以你的理解错了
      

  2.   

    还是不行啊
    while($array=mysql_fetch_array($query)){  //我理解为把一条记录放在一个数组中
      $count=count($array);  同样的SQL语句,在mysql命令行里面显示有四个字段,是正确的
      但是用上面的语句就变成八个字段了,每个被重复一次
      count也显示是 8;  不知道是怎么会事,非常困惑
      

  3.   

    又是 while 又是 foreach 难怪显两遍。
    只要 
    foreach (mysql_fetch_array($query) as $value) {
       echo $value;
    }
    或者
    while (list ($key, $value) = mysql_fetch_row ($query)) {
        echo $value
    }
      

  4.   

    有什么好困惑的???$array中本来就有两个相同的值,你输出当然会出现两次了。不要再这样那样理解了,你print_r看一下不就得了吗?
      

  5.   

    while($array=mysql_fetch_assoc($query)){  
        foreach($array as $key => $value){      
          echo $key."=".$value."\t";
    因为mysql_fetch_array返回两组数据,一组以数字为索引,一组以字段名做为索引
    如果只想返回以字段名为索引的使且mysql_fetch_assoc或mysql_fetch($query, MYSQL_ASSOC)
      

  6.   

    打错了如果只想返回以字段名为索引的使用mysql_fetch_assoc或mysql_fetch_array($query, MYSQL_ASSOC)
      

  7.   

    谢谢大家,是我对mysql_fetch_array()的理解不够
    换成mysql_fetch_row()可以了
      

  8.   

    你的疑惑是有道理的
    mysql_fetch_array的第二个参数表示以什么方式返回数组
    分别为
    MYSQL_ASSOC 以列名为键
    MYSQL_NUM   以序数为键
    MYSQL_BOTH  两者都有
    默认为MYSQL_BOTH
    因为你mysql_fetch_array($query),所以数组的项数是字段的两倍你
    foreach($array as $key=>$value){              //遍历数组,来显示所有字段的值
          echo "$key => $value\t";就清楚了