用户
 找回密码
 入住 CI 中国社区
搜索
查看: 28614|回复: 7
收起左侧

[数据库] CI框架分页查询时同时查询数据和总数的方法

[复制链接]
发表于 2012-12-18 14:21:44 | 显示全部楼层 |阅读模式
本帖最后由 lxylxy888666 于 2012-12-18 14:26 编辑

要写个demo,想同时查询数据和分页数
用了下clone


PHP复制代码
 
    /**
     * 查询数据
     * @param string $md5
     * @param int $offset 起始位
     * @param int $limit
     *
     * @return array
     */

    function get_limit($md5, $offset, $limit=5)
    {
        //起始位置处理
        $offset = (($offset>0 ? $offset : 1) - 1) * $limit;
       
        //条件初始化
        $where = array('state'=>0);
        //条件
        if( $md5 ) {
            $where['md5'] = $md5;
        }
       
        $this->db->where( $where );
 
        //在order、group或limit前查询总数
        $db = clone($this->db);
        $total = $this->db->count_all_results('class');
        echo $this->db->last_query();
        echo '<hr/>';
       
        $this->db = $db;
        $this->db->order_by('id desc');
        $this->db->limit($limit, $offset);
        $query = $this->db->get('class');
       
        $data = $query->result_array();
       
        //sql调试方法
        echo $this->db->last_query();
 
        //return 数据和总数
        return array('data'=>$data, 'total'=>$total);
    }
 
复制代码



show:

  1. SELECT COUNT(*) AS numrows FROM classWHERE state =  0AND md5 =  '111'

  2. SELECT * FROM class WHERE state =  0 AND md5 =  '111'ORDER BY id desc LIMIT 5
复制代码
看下是你想要的么。

发表于 2013-2-1 21:27:32 | 显示全部楼层
好东西,支持一下
发表于 2015-9-7 11:37:34 | 显示全部楼层
嗯,帮大忙啦,3Q
发表于 2015-9-7 14:42:34 | 显示全部楼层
你这个东西太简单了,我建议你们再次封装一下,更好用~~
发表于 2015-9-7 16:07:03 | 显示全部楼层
是最好的方案吗,有没有其他同学分享一下更好的方案
发表于 2015-9-15 14:49:35 | 显示全部楼层
longjianghu 发表于 2015-9-7 14:42
你这个东西太简单了,我建议你们再次封装一下,更好用~~

有好的案例分享一下吗
发表于 2015-12-11 01:02:55 | 显示全部楼层
这个应该是比较好的方案了
发表于 2017-9-18 20:38:46 | 显示全部楼层
好奇的是如果是多表关联查询的话应该怎么处理?

本版积分规则