概要

在上一篇文章【Typecho】Typecho插件那些事(一)中我们分析了HelloWorld插件的源码,那么有些同学是不是以为懂了上篇文章我们就可以开始写一个插件了呢?答案是可以但是只能写一些不用怎么存储数据的插件但插件一般都需要存储信息那怎么整呢?这里我们就得谈谈Typecho提供的操作数据库的类了

一、如何获取数据库处理器

获取数据库处理器的方法我目前为止只知道两个

1
2
3
4
//第一种
$db = Typecho_DB::get();
//第二种
$db //这个变量

就是一个数据库处理器

二、数据库处理器的常用方法

在Typecho_Db对象中有一下这些方法用于增改删查数据库
这里为了下面方法的演示假设数据库有个books表,表中有三个字段分别是id,name,author

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
//获取设配器名称
getAdapterName()

//获取表前缀
getPrefix()

//执行查询语句
$db->query($query,$op)
//$query是一个Typecho_Db_Query对象或者是SQL字符串语句
//$op是读写操作
读:Typecho_Db::READ
写:Typecho_Db::WRITE


//插入数据
$db->query($db->insert(表名)->rows(对应的数据数组))

$datas=array(
'id'=>123,
'name'=>'Java',
'author'=>'Jamiexu'
);
$db->query($db->insert('books')->rows($datas));//插入一条数据




//更新数据
$db->query($db->update(表名)->rows(对应的数据数组))
$datas=array(
'id'=>134,
'name'=>'Java',
'author'=>'Jamiexu'
);
$db->query($db->update('books')->rows(datas)->where('id=?',123));//修改id为123数据的id为134




//删除数据
$db->query($db->delete(表名))
$db->query($db->delete('books')->where('id=?',132))//删除id=132的数据




//选择查询字段
$db->select();
//查询数据
$db->select()->from(表名);
$datas = $db->query($db->select()->from('books')->where('id!=?',0));
var_dump($datas);
//一次性取出所有行放在数组里
var_dump($db->fetchAll($datas));

//一次性取一行
var_dump($db->fetchRow($datas));



//以上的插入,更新,删除,查询都返回了Typecho_Db_Query对象用于操作下面是该类的方法

//获取Typecho_Db_Query
$sel = $db->select();

//排序
order('排序的索引',排序的方式)
//排序的方式有两个
//升序排序:Typecho_Db::SORT_ASC
//降序排序:Typecho_Db::SORT_DESC
$sel->from('books')->order('id',Typecho_Db::SORT_ASC)//以id进行升序排序


//或者查询条件
where(查询条件,条件值)
$data = $db->query($sel->from('books')->where('id=?',1));//查询id为1的数据


//查询条件
orWhere(查询条件,条件值)
$data = $db->query($sel->from('books')->where('id=?',1)->orWhere('id=?',2));//查询id为1或id为2的数据


//查询行数限制
limit(行数)

//查询行数偏移量
offset(偏移值)

//分页查询
page(页数,每页行数)

//指定需要写入的栏目及其值
row(数据数组)

//集合聚集(GROUP BY)
group(字段)

//选择查询字段
select(需要查询的字段)


//查询记录操作(SELECT)
from(需要查询到表)