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 strlen mb_strlen计算中英文混排字符串长度
Jul 10 PHP
第4章 数据处理-php数组的处理-郑阿奇
Jul 04 PHP
细谈php中SQL注入攻击与XSS攻击
Jun 10 PHP
php中的curl使用入门教程和常见用法实例
Apr 10 PHP
PHP实现简单实用的分页类代码
Apr 08 PHP
php cookie 详解使用实例
Nov 03 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
Feb 10 PHP
PHP清除缓存的几种方法总结
Sep 12 PHP
thinkPHP框架自动填充原理与用法分析
Apr 03 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
May 29 PHP
thinkphp框架使用JWTtoken的方法详解
Oct 10 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
Oct 30 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安装攻略:常见问题解答(三)
2006/10/09 PHP
php生成txt文件标题及内容的方法
2014/01/16 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
php数组键名技巧小结
2015/02/17 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
php下载远程大文件(获取远程文件大小)的实例
2017/06/17 PHP
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
2012/07/31 Javascript
jQuery 获取和设置select下拉框的值实现代码
2013/11/08 Javascript
BOM系列第二篇之定时器requestAnimationFrame
2016/08/17 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
基于LayUI分页和LayUI laypage分页的使用示例
2017/08/02 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
详解js常用分割取字符串的方法
2019/05/15 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
如何实现echarts markline标签名显示自己想要的
2020/07/20 Javascript
javascript解析json格式的数据方法详解
2020/08/07 Javascript
Python功能键的读取方法
2015/05/28 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
白兰氏健康Mall:BRAND’S
2017/11/13 全球购物
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
JAVA程序员面试题
2012/10/03 面试题
留学自荐信写作方法
2014/01/27 职场文书
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript
vue3语法糖内的defineProps及defineEmits
2022/04/14 Vue.js