去年我写了一个名为EPDB的MySQL数据库类,当时也附带了这么一篇文章。这之后也做出了一两次调整,总的来说还是比较好使的,自己常用。这两天又把它翻了出来,改造了一下。主要调整:改用MySQLi扩展;部分逻辑修改。
至于做出了哪些调整,不是本文的主要内容。但是注意一点:修改后使用上和原来还是有一些差异的,主要体现在程序完全信任程序员的代码,不会自己检查潜在的危险操作。这里对使用方法做一个说明。
第一部分:配置和使用。
打开文件,根据自己的情况配置好第12行至第17行的相关信息;
include 'epdb.php'
;包含文件,然后使用就行了。
第二部分:实例化对象。
方法:$db = new epdb(string $table);
。实例化时必须传入一个参数,即不含表前缀的表头。例子:欲操作表名为app_user
,则传入的参数为user
。操作表在实例化后可以更改。
第三部分:特殊方法。
1.table()
方法。
table()
方法用于更改当前操作的表。
原型:void table(string $table);
。参数:不含表前缀的表头。
*注:可直接操作table属性来达到相同效果。直接操作属性需要赋值为完整表名。
2.execute()
方法。
execute()
方法用于执行一条语句。
原型:mixed execute(string $query);
。参数:完整语句。返回:失败时返回FALSE
;成功执行SELECT
、SHOW
、DESCRIBE
或EXPLAIN
查询会返回一个mysqli_result
对象;其他查询则返回TRUE
。
第四部分:数据传入。
1.data()
方法。
data()
方法处理需要写入数据库的数据。
原型:object data(array $data);
。参数:相关数据的关联数组。返回:返回对象自身即$this
用于连贯操作。
2.where()
方法。 where()
方法处理WHERE
子句部分,注意只有AND
逻辑。
原型:object where(array $cond);
或object where(string $cond);
。参数(1):相关数据的关联数组。参数(2):完整的WHERE
子句字符串。返回:返回对象自身即$this
用于连贯操作。
3.order()
方法。
order()
方法处理ORDER BY
子句部分。
原型:object order(string $order, [string $type = 'ASC']);
。参数:$order
为排序基于的字段;$type
为指定种类,ASC
升序、DESC
降序,默认升序。返回:返回对象自身即$this
用于连贯操作。
4.limit()
方法
limit()
方法处理LIMIT
子句部分。
原型:object limit(string $limit = '1');
。参数:完整的LIMIT
子句字符串。返回:返回对象自身即$this
用于连贯操作。
第五部分:读数据方法(均为SELECT
语句)。
1.select()
方法。
select()
方法返回全部字段数据结果集。
原型:array select(void);
。返回:成功得到数据返回关联数组;执行失败或无数据返回NULL
。
可以使用的数据方法:where()
、order()
、limit()
。
2.find()
方法。
find()
方法返回一条数据。
原型:object find(void);
。返回:成功得到数据返回关联对象;执行失败或无数据返回NULL
。
可以使用的数据方法:where()
、order()
;强制执行LIMIT 1
。
3.findArr()
方法。
find()
方法返回一条数据。
原型:array findArr(void);
。返回:成功得到数据返回关联数组;执行失败或无数据返回NULL
。
可以使用的数据方法:where()
、order()
;强制执行LIMIT 1
。
4.getField()
方法。
getField()
方法返回指定字段数据结果集。
原型:array getField(string $columns);
。返回:成功得到数据返回关联数组;执行失败或无数据返回NULL
。
可以使用的数据方法:where()
、order()
、limit()
。
5.count()
方法。count()
方法返回符合条件数据的行数。
原型:string count(void);
。返回:成功得到数据返回符合条件数据的行数,类型为字符串;执行失败或无数据返回NULL
。
可以使用的数据方法:where()
、limit()
。
第六部分:写数据方法。
1.add()
方法。
add()
方法插入一条数据(INSERT
语句)。
原型:bool add(void);
。返回:成功返回布尔值true
,失败返回布尔值false
。
必须先使用data()
方法提交数据。
2.save()
方法。
save()
方法修改一条数据(UPDATE
语句)。
原型:bool save(void);
。返回:成功返回布尔值true
,失败返回布尔值false
。
必须先使用data()
方法提交数据。
3.setInc()
方法。
setInc()
方法对数字类型的字段进行加减(UPDATE
语句)。
原型:bool setInc(string $field, [string $step = 1, string $math = '+']);
。参数:$field
为要操作的字段(限一个);$step
为操作的数值;$math
为标识符,使用中不需要特别理会。返回:成功返回布尔值true
,失败返回布尔值false
。
可以使用的数据方法:where()
、order()
、limit()
;建议至少先使用where()
方法。
4.setDec()
方法。
setDec()
方法对数字类型的字段进行减(UPDATE
语句)。本方法通过调用setInc($field, $step, '-');
实现。
原型:bool setInc(string $field, [string $step = 1);
。参数:$field
为要操作的字段(限一个);$step
为操作的数值。返回:成功返回布尔值true
,失败返回布尔值false
。
可以使用的数据方法:where()
、order()
、limit()
;建议至少先使用where()
方法。
5.delete()
方法。
delete()
方法用于删除数据行(DELETE
语句)。
原型:bool delete(void);
。返回:成功返回布尔值true
,失败返回布尔值false
。
必须先使用where()
方法限定范围以避免全表被删除,清空表可使用execute("TURNCATE {$db->table}");
,删除全表可先调用where('WHERE 1')
。可以使用的数据方法:where()
、order()
、limit()
。
完。