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 相关文章推荐
php UBB 解析实现代码
Nov 27 PHP
关于IIS php调用com组件的权限问题
Jan 11 PHP
PHP转换文件夹下所有文件编码的实现代码
Jun 06 PHP
PHP解码unicode编码的中文字符代码分享
Aug 13 PHP
详解PHP实现异步调用的4种方法
Mar 14 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
Apr 11 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
Nov 08 PHP
PHP登录(ajax提交数据和后台校验)实例分享
Dec 29 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
Jun 30 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
Jun 14 PHP
通过代码实例解析PHP session工作原理
Dec 11 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中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
2014/11/19 PHP
PHP 使用redis简单示例分享
2015/03/05 PHP
PHP人民币金额转大写实例代码
2015/10/02 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
2015/10/22 PHP
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
javascript中使用正则计算中文长度的例子
2014/04/29 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
不想让浏览器运行javascript脚本的方法
2015/11/20 Javascript
JavaScript表单验证实例之验证表单项是否为空
2016/01/10 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
2016/06/08 Javascript
实例详解jQuery的无new构建
2016/08/02 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
2017/11/28 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
js实现html滑动图片拼图验证
2020/06/24 Javascript
python和bash统计CPU利用率的方法
2015/07/10 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
python实现弹窗祝福效果
2019/04/07 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
Python re 模块findall() 函数返回值展现方式解析
2019/08/09 Python
python的移位操作实现详解
2019/08/21 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
Python获取、格式化当前时间日期的方法
2020/02/10 Python
Python字符串及文本模式方法详解
2020/09/10 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
香蕉共和国Banana Republic官网:美国GAP旗下偏贵族风格服饰品牌
2016/11/21 全球购物
装修设计师求职信
2014/02/26 职场文书
《会走路的树》教后反思
2014/04/19 职场文书
回复函范文
2015/07/14 职场文书
导游词之包公祠
2019/11/25 职场文书