查询数据库, 用while($row = mysql_fetch_array()){.....}    ,如果改成一个方法,while($row = mysql_fetch_array()){$arr = $row} 然后return $arr; 再去foreach($arr as $val) 这样应该会开销大点吧?不过比较简洁。可是我现在查询数据库语句都差不多,我不想每个页面都去写差不多的sql语句,集成到一个方法好不好!!??

解决方案 »

  1.   

    可以. 如果你的循环内处理不复杂,很快,那么一次两次都差不多.如果你的循环内处理复杂,那么两次循环有可能更好 ( 这个有人会想不通 )
    因为将sql的部分快速处理完,可以将数据库连接释放给其他进程使用, (你fetch的时候是hold住连接的)
    这样总体上更有效率. 
    当然这样在两个循环之间,你需要一个数组保存查询结果,内存会稍稍多占一会,但是一般不会影响太大
      

  2.   

    给一个函数你,只要将SQL语句扔给它就会将全部记录输出了
    function QueryArray($query,$result_type=MYSQL_ASSOC) {
        $array = array();
     $result = mysql_query($query);
             $rows = mysql_num_rows($result);
             for($i=0;$i<$rows;$i++) {
      $array[$i]=mysql_fetch_array($result,$result_type);
            }
           @mysql_free_result($result);
         return $array;  }
      

  3.   


    +1 这个效率不简单比一次循环节省多少,或者更多
    但是从n个php进程同时连接mysql来说,1个php进程大了,但是减少了n-(mysql当前连接最大数)-1个进程等待数据库处理的时间