Thinkphp 框架扩展之数据库驱动常用方法小结


Posted in PHP onApril 23, 2020

本文实例讲述了Thinkphp 框架扩展之数据库驱动常用方法。分享给大家供大家参考,具体如下:

数据库驱动

默认的数据库驱动位于Think\Db\Driver命名空间下面,驱动类必须继承Think\Db类,每个数据库驱动必须要实现的接口方法包括(具体参数可以参考现有的数据库驱动类库):

驱动方法 方法说明
架构方法 __construct($config='')
数据库连接方法 connect($config='',$linkNum=0,$force=false)
释放查询方法 free()
查询操作方法 query($str)
执行操作方法 execute($str)
开启事务方法 startTrans()
事务提交方法 commit()
事务回滚方法 rollback()
获取查询数据方法 getAll()
获取字段信息方法 getFields($tableName)
获取数据库的表 getTables($dbName='')
关闭数据库方法 close()
获取错误信息方法 error()
SQL安全过滤方法 escapeString($str)

数据库的CURD接口方法(通常这些方法无需重新定义)

方法 说明
写入 insert($data,$options=array(),$replace=false)
更新 update($data,$options)
删除 delete($options=array())
查询 select($options=array())

介于不同数据库的查询方法存在区别,所以经常需要对查询的语句进行重新定义,这就需要修改针对查询的selectSql属性。该属性定义了当前数据库驱动的查询表达式,默认的定义是:

'SELECT%DISTINCT% %FIELD% FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%%ORDER%%LIMIT% %UNION%'

驱动可以更改或者删除个别查询定义,或者更改某个替换字符串的解析方法,这些方法包括:

方法名 说明 对应
parseTable 数据库表名解析 %TABLE%
parseWhere 数据库查询条件解析 %WHERE%
parseLimit 数据库查询Limit解析 %LIMIT%
parseJoin 数据库JOIN查询解析 %JOIN%
parseOrder 数据库查询排序解析 %ORDER%
parseGroup 数据库group查询解析 %GROUP%
parseHaving 数据库having解析 %HAVING%
parseDistinct 数据库distinct解析 %DISTINCT%
parseUnion 数据库union解析 %UNION%
parseField 数据库字段解析 %FIELD%

驱动的其他方法根据自身驱动需要和特性进行添加,例如,有些数据库的特殊性,需要覆盖父类Db类中的解析和过滤方法,包括:

方法名 说明
parseKey 数据库字段名解析
parseValue 数据库字段值解析
parseSet 数据库set分析
parseLock 数据库锁机制

定义了驱动扩展后,需要使用的时候,设置相应的数据库类型即可:

'DB_TYPE'=>'odbc', // 数据库类型配置不区分大小写

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
推荐一篇入门级的Class文章
Mar 19 PHP
php str_pad() 将字符串填充成指定长度的字符串
Feb 23 PHP
PHP无限分类(树形类)的深入分析
Jun 02 PHP
PHP 5.3新增魔术方法__invoke概述
Jul 23 PHP
PHP获取远程图片并保存到本地的方法
May 12 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
Jan 03 PHP
PHP date()格式MySQL中插入datetime方法
Jan 29 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
May 15 PHP
如何在PHP中生成随机数
Jun 04 PHP
php7连接MySQL实现简易查询程序的方法
Oct 13 PHP
PHP的重载使用魔术方法代码实例详解
Feb 26 PHP
Thinkphp 框架扩展之类库扩展操作详解
Apr 23 #PHP
TP框架实现上传一张图片和批量上传图片的方法分析
Apr 23 #PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
Apr 22 #PHP
PHP 实现 JSON 数据的编码和解码操作详解
Apr 22 #PHP
PHP 实现 WebSocket 协议原理与应用详解
Apr 22 #PHP
php模拟实现斗地主发牌
Apr 22 #PHP
PHP实现随机发扑克牌
Apr 22 #PHP
You might like
PHP中大于2038年时间戳的问题处理方案
2015/03/03 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
2015/03/25 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
编写PHP脚本来实现WordPress中评论分页的功能
2015/12/10 PHP
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
open 动态修改img的onclick事件示例代码
2013/11/13 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
js确认删除对话框适用于a标签及submit
2014/07/10 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
jquery实现的Banner广告收缩效果代码
2015/09/02 Javascript
JS数组去重的6种方法完整实例
2018/12/08 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
javascript实现简易的计算器
2020/01/17 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
在Python的循环体中使用else语句的方法
2015/03/30 Python
pygame加载中文名mp3文件出现error
2017/03/31 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
单链表反转python实现代码示例
2018/02/08 Python
Python键盘输入转换为列表的实例
2018/06/23 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
2019/02/21 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
python爬取音频下载的示例代码
2020/10/19 Python
水果花束:Fruit Bouquets
2017/12/20 全球购物
JD Sports比利时官网:英国领先的运动鞋和运动服饰零售商
2018/10/10 全球购物
linux面试题参考答案(7)
2012/10/29 面试题
JSP&Servlet技术面试题
2015/05/21 面试题
大学生学习生活的自我评价
2013/11/01 职场文书
公司门卫的岗位职责
2014/02/19 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
2014年出纳工作总结与计划
2014/12/09 职场文书
师德标兵先进事迹材料
2014/12/19 职场文书
博士导师推荐信
2015/03/25 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书