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

前言

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


缓存

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


创建数据库

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

插入数据

1
2
3
4
5
6
7
//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');//插入到数据表中

删除数据

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

修改数据

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

1
2
3
4
5
6
//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');


查询数据

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

1
2
3
4
5
6
7
8
9
10
11
//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的内容

补充一些筛选

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//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如何按月统计数据

参考链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//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();


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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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;
}


php利用array_search与array_column实现二维数组查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$userdb=Array
(
(0) => Array
(
(uid) => '100',
(name) => 'Sandra Shush',
(url) => 'urlof100'
),

(1) => Array
(
(uid) => '5465',
(name) => 'Stefanie Mcmohn',
(pic_square) => 'urlof100'
),

(2) => Array
(
(uid) => '40489',
(name) => 'Michael',
(pic_square) => 'urlof40489'
)
);
// simply u can use this
$key = array_search(40489, array_column($userdb, 'uid'));

/**
如果$userdb很大,建议使用一个变量,避免搜索每个元素时都调用array_column()
$uid = array_column($userdb, 'uid');
$found_key = array_search(40489, $uid);
*/
如果对您有帮助,请我喝杯咖啡?