foreach($rs->fetch_row() as $key=>$v2){  
   
  print_r( $v2); //这里只能取出第一行数据
   
}
这样写实现的功能是:循环输出第一行的所有列的数据。
$rs->fetch_row()返回的是数组。

解决方案 »

  1.   

    foreach($rs->fetch_row() as $key=>$v2){  
       
      print_r( $v2); //这里只能取出第一行数据
       
    }foreach($rs->fetch_array() as $key=>$v2){  
       
      print_r( $v2); //这里只能取出第一行数据
       
    }
      

  2.   

    你的$rs->fetch_row()就只有一行数据,要用while循环循环读取出来。
      

  3.   


    我也考虑过是个二维数组,用
    foreach($rs->fetch_row() as $v2){
          
        foreach($v2 as $v3){
        
       print_r( $v3);
        
      }
    }但是报错
      

  4.   


    foreach($rs->fetch_row() as $key=>$v2){  
       
      print_r( $v2); //这里只能取出第一行数据
       
    }
    你foreach()里面的东西本身就有问题了,$rs->fetch_row()只取出了一行吧
      

  5.   

    错误提示:Warning: Invalid argument supplied for foreach() in D:\www\mysqli.php on line 13
      

  6.   

    网上说foreach的效率while高,所以用foreach,如果问题出在re->fetch_array这里,那while应该也不会读出来多行数据?
      

  7.   

    这个还是不对啊!
    foreach($rs->fetch_row() as $v2)
    当你打印$v2的时候,打印出来的是第一行中的每一列的数据,
    是个字符串,不是数组。
    这种情况下,你再foreach($v2 as $v3)的话肯定会报错啊!while($ary=$rs->fetch_row())
    {
    foreach($ary as $key=>$v2){
    print_r($v2);
    }
    }
    这样是可以的。
      

  8.   

    yupengbo 说的很对,是不是可以得出个结论while是可以行数据和列数据都遍历,而foreach只能遍历列数据????
      

  9.   

    可以这样理解 $rs->fetch_row() 这个相当于一个指针 第一次指向 0
    所以while读取$rs->fetch_row() 是有数据出来的,读出来继续下一次的时候 $rs->fetch_row()这个指针会向下移一位。直到读不出数据才会结束。foreach($rs->fetch_row() as $v2)里面的$rs->fetch_row() 仅仅当作一个数组来处理 把里面的一行数组读完就结局了。不会在循环的从$rs->fetch_row() 读取数据
      

  10.   

    这样应该可以一次性读取出来foreach($rs->fetch_all() as $key=>$v2){  
       
      print_r( $v2); //这里只能取出第一行数据
       
    }
      

  11.   

    嗯, 
    foreach是在数组内部循环,
    注意你第一个foreach那个循环, fetch_row只运行了一次,而while那个循环,fetch_array是运行了5次
      

  12.   

    无语,你应该写
    foreach($rs as $row)
        printf_r($row);