strgeon

CI框架增删改查等数据库操作
前言最近在做Web的后端开发,CI用的比较多,记录一下数据库操作。每次查文档也挺累的、套路操作等缓存经常使用的东西...
扫描右侧二维码阅读全文
14
2018/07

CI框架增删改查等数据库操作

前言

最近在做Web的后端开发,CI用的比较多,记录一下数据库操作。
每次查文档也挺累的、套路操作等


缓存

经常使用的东西可以使用缓存驱动器,参照下官网上的文档;


创建数据库

//在数据库中插入一个datatable表
CREATE TABLE datatable(name char(50),a int,b int)


插入数据

//sql写法
insert into datatable(name,A,B) values("1234",100,100)
//CI写法
$this->db->set('name',$name); //字段name赋值为$name
$this->db->set('A',$A); //字段A赋值为$A
$this->db->set('B',$B);//字段B赋值为$B
$result = $this->db->insert('datatable');//插入到数据表中


删除数据

//sql写法
delete from datatable where name='1234'
//CI写法
$this->db->where('name',$name); //把满足条件的内容删掉
$result = $this->db->delete('datatable');


修改数据

大多数时候根据主键找到之后修改,但是一般不修改主键

//sql写法
update datatable set A=101 where name='1234'
//CI写法
$this->db->where('name',$name); //用主键查询比较多
$this->db->set('A',$A); //更新A的数据
$result = $this->db->update('datatable');


查询数据

查询数据应该是用的最多的

//sql写法
select * from 数据表 where 字段名=字段值
//CI写法
$this->db->from('lanman_sys_data_dictionary');
$this->db->where('dataName',$dataName);
$query = $this->db->get();
$result = $query->result_array();
//获得查询行数
$row = $query->num_rows()
//模糊查詢
$this->db->like('name','1'); //对于name字段的值进行模糊匹配有1的内容

补充一些筛选

//sql写法
sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"
sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"
sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"
sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"
sql="select * from 数据表 where 字段名 between 值1 and 值2"
//数据记录统计函数:
AVG(字段名) 得出一个表格栏平均值
COUNT(*¦字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加
引用以上函数的方法:
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=conn.excute(sql)
用 rs("别名") 获取统的计值,其它函数运用同上。


mysql如何按月统计数据

参考链接

//sql写法
select DATE_FORMAT(payTime,'%Y-%m') as month,sum(payMoney) as payMoney
from datatable
where DATE_FORMAT(payTime,'%Y')=2017
group by month
order by month
//CI写法
$this->mbop->from('datatable');
$this->mbop->select('DATE_FORMAT(payTime,\'%Y-%m\') as month,sum(payMoney) as payMoney');
$this->mbop->where('DATE_FORMAT(payTime,\'%Y\')',$year);
$this->mbop->order_by('month'); //也可以order_by('month','ASC');
$this->mbop->group_by('month');
$query = $this->mbop->get();
$result= $query->result_array();


根据多种条件的模糊查询&分页查询&按字段排序

在使用查询的过程中经常会遇到可能会有多种条件进行限制的情况。
同时可以通过某个字段筛选

public function get_recharge_detail($username, $start_date,$end_date,
                                    $page_size=30, $page_index=1,$order_by=NULL,$direction=NULL)
    {
        // 筛选条件
        if ($recharge_admin) {
            $this->mbop->like('adminLoginName', $recharge_admin);
        }
        // 时间范围判定
        if ($start_date) {
            $this->mbop->where('payTime>=', $start_date);
        }
        if ($end_date) {
            $this->mbop->where('payTime<=', $end_date);
        }
        if ($order_by) {
            if (!$this->db->field_exists($order_by,'lanman_billing_pay_detail')) {
                //字段不存在
                $this->msg = '该筛选字段不存在';
                $this->code = 10301;
                return false;
            } else {
                $this->db->order_by($order_by, $direction == null ? 'DESC' : $direction);
            }
        }
        $result_nums = $this->mbop->count_all_results('database_name', false); //找到的条数
        $page_size = intval($page_size);
        $page_index = intval($page_index);
        $limit = 0; //这两个值都会在下面确定
        $offset = 30;
        if ($page_index >= 1) {
            $offset = ($page_index - 1) * $page_size;
            $limit = $page_size;
        }
        $this->mbop->limit($limit, $offset);
        $query = $this->mbop->get();
        $result = $query->result_array();
        $result_new = array();
        if ($result) {
            $this->msg = '查到充值记录';
            $this->code = 0;
            $result_new['page_index'] = $page_index;
            $result_new['page_size'] = $page_size;
            $result_new['count'] = $result_nums;
            $result_new['records'] = $result;
        } else {
            $this->msg = '未查到充值记录!';
            $this->code = 10302;
            // $result_new['page_index'] = $page_index;
            // $result_new['page_size'] = $page_size;
            // $result_new['count'] = $result_nums;
        }
        return $result_new;
    }

Last modification:August 10th, 2018 at 03:55 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment