php CI框架常用数据库操作
原生sql写法
$sql = "insert into test (age,name) values (18,'苏三')"; $this->db->query($sql);
简化增删改查
//增 $this->db->insert('test',['age'=>20]); //删 $this->db->delete('test',['id'=>5]); //改 $this->db->update('test',['name'=>'吞吐量'],['id'=>4]); //查 $this->db->where('id',2)->get('test')->result_array();
排序
$this->db->order_by('id desc')->get('test')->result_array();
分组
$this->db->group_by('age')->get('test')->result_array();
聚合函数
//获取指定字段最大值 $this->db->select_max('id')->get('test')->result_array(); //获取指定字段最小值 $this->db->select_min('id')->get('test')->result_array(); //获取指定字段平均 $this->db->select_avg('id')->get('test')->result_array(); //获取指定字段求和 $this->db->select_sum('id')->get('test')->result_array();
连表查询
$this->db->select('t1.id,t2.age,t1.name') ->from('test1 t1') ->join('test2 t2', 't1.id = t2.id', 'left') ->get() ->result_array();
分页查询
//页码 $pindex = 1; //单页展示数 $psize = 2; //页码加工 $pindex = max($pindex-1,0) * $psize; //分页查询 $limt = $this->db->limit($psize,$pindex)->get('test')->result_array();
常规条件查询
//or $this->db->where(['age'=>18,'name'=>'呵呵1'])->or_where('id >',3)->get('test')->result_array(); //in $this->db->where_in('id',[1,2])->get('test')->result_array(); //not in $this->db->where_not_in('id',[2,3])->get('test')->result_array(); //like的使用,默认是%关键字% $this->db->like('name','呵')->get('test')->result_array();
条件查询中括号的使用
$this->db ->where('age',17) ->group_start() ->like('name','关键字') ->or_like('tag','关键字') ->group_end() ->get('test')->result_array();
批量新增数据
$insert_array = [ ['name'=>'张三','age'=>18], ['name'=>'李四','age'=>20] ]; $this->db->insert_batch('test',$insert_array);
批量修改数据
$update = [ [ 'id' => 10,'name' => 55], [ 'id' => 11,'name' => 13] ]; //这里的id是表格的主键 $this->db->update_batch('test', $update, 'id');
事务
//手工模式(传统模式) $this->db->trans_begin(); $this->db->trans_rollback(); $this->db->trans_commit(); //简易模式 (不需要每个数据库操作失败都rollback) $this->db->trans_start(); $this->db->update('test',['deleted'=>1],['id'=>10]); $this->db->insert('test2',['age'=>20,'name'=>'北方']); $this->db->trans_complete(); if ($this->db->trans_status() === FALSE) echo "数据库操作失败";
最终查询输出方式
//输出二维数组 $this->db->get('test')->result_array(); //输出一维数组 $this->db->get('test')->row_array(); //输出指定字段值 $this->db->get('test')->row('id'); //获取查询条件的行数 $this->db->get('test')->num_rows(); //输出二维对象数组 $this->db->get('test')->result(); //返回对象数组 $this->db->get('test')->result_object(); //获取查询条件的第一条数据 $this->db->get('test')->first_row(); //获取查询条件的最后一条数据 $this->db->get('test')->last_row(); //获取表格字段数量 $this->db->get('test')->num_fields(); //返回表格字段 $this->db->get('test')->list_fields(); //返回表格设计 $this->db->get('test')->field_data();
其他
//输出最后一条执行的sql $this->db->last_query(); //根据条件得到符合条件的行数 $this->db->where('age',18)->count_all_results('test'); //返回该表的列数(加条件也查全表列数) $this->db->count_all('test'); //返回最后插入的主键id $this->db->insert_id();