zoukankan      html  css  js  c++  java
  • CodeIgniter框架对数据库查询结果进行统计

    假设有一个user表,如果要查询符合条件sex=male的记录数量,有下面几种方法:

    方法一:先取回所有符合条件的记录,再count

    $res = $this->db->query("select * from user where sex='male'")->result_array();
    $num = count( $res );
    

      不推荐上面的做法,因为我们的目的不是取回表中的数据,只需要具体的行数。取回数据的过程就是一个多余的操作,会浪费很多资源!

    方法二:在SQL语句中使用count(*)

    $sql = "select count(*) num from user where sex='male'";
    $res = $this->db->query($sql)->row_array();
    $num = $res['num'];
    

      

    方法三:在取结果之前打印query返回值,通过获取query内部的属性名来获取num_rows,注意全是属性,不能使用数组格式访问:

    $sql = "select *  from user where sex='male'";
    $res = $this->db->query($sql);
    print_r($res);
    

      访问程序,打印结果如下:

    CI_DB_mysqli_result Object
    (
        [conn_id] => mysqli Object
            (
                [affected_rows] => 130
                [client_info] => mysqlnd 5.0.11-dev - 20120503 - $Id: ....... $
                [client_version] => 50011
                [connect_errno] => 0
                [connect_error] => 
                [errno] => 0
                [error] => 
                [error_list] => Array()
                [field_count] => 25
                [host_info] => Localhost via UNIX socket
                [info] => 
                [insert_id] => 0
                [server_info] => 5.1.73-log
                [server_version] => 50173
                [stat] => ........
                [sqlstate] => 00000
                [protocol_version] => 10
                [thread_id] => 28698933
                [warning_count] => 0
            )
        [result_id] => mysqli_result Object
            (
                [current_field] => 0
                [field_count] => 25
                [lengths] => 
                [num_rows] => 130
                [type] => 0
            )
        [result_array] => Array()
        [result_object] => Array()
        [custom_result_object] => Array()
        [current_row] => 0
        [num_rows] => 
        [row_data] => 
    )
    

      可以注意到这里面有一个conn_id->affected_rows和 result_id->num_rows,所以可以通过这两个值获得结果集的记录数量:

    echo $res->conn_id->affected_rows;
    echo $res->result_id->num_rows;
    

      

      第三种方法并不是很好的选择,推荐第二种,提到第三种方法的目的在于了解query的返回值,然后可以自己根据结果写一些helper来处理一些事情

  • 相关阅读:
    java 面向对象(二十二):关键字:final
    The Loss of Bounding Box Regression
    五大经典算法
    二叉树的深度优先遍历(前序、中序、后序)
    faster R-CNN中anchors 的生成过程
    快速排序
    __init__()
    好博客
    Focal Loss for Dense Object Detection(RetinaNet)(代码解析)
    Python获取 当前目录、上一级目录
  • 原文地址:https://www.cnblogs.com/-beyond/p/8483130.html
Copyright © 2011-2022 走看看