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 相关文章推荐
动态网站web开发 PHP、ASP还是ASP.NET
Oct 09 PHP
聊天室php&mysql(一)
Oct 09 PHP
为查询结果建立向后/向前按钮
Oct 09 PHP
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
Mar 15 PHP
php算开始时间到过期时间的相隔的天数
Jan 12 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
Jul 01 PHP
PHP在网页中动态生成PDF文件详细教程
Jul 05 PHP
Yii框架实现记录日志到自定义文件的方法
May 23 PHP
Mac系统下安装PHP Xdebug
Mar 30 PHP
laravel withCount 统计关联数量的方法
Oct 10 PHP
PHP 实现缩略图
Mar 09 PHP
laravel使用redis队列实例讲解
Mar 23 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在window iis的莫名问题的测试方法
2013/05/14 PHP
PHP数据过滤的方法
2013/10/30 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
2014/05/23 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
php模拟post上传图片实现代码
2016/06/24 PHP
PHP的简单跳转提示的实现详解
2019/03/14 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
比较详细的关于javascript中void(0)的具体含义解释
2007/08/02 Javascript
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
JS正则表达式大全(整理详细且实用)
2013/11/14 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
2016/05/12 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
jquery仿京东侧边栏导航效果
2017/03/02 Javascript
详谈JS中数组的迭代方法和归并方法
2017/08/11 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
Vue2实时监听表单变化的示例讲解
2018/08/30 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
2019/10/11 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
使用webpack搭建pixi.js开发环境
2020/02/12 Javascript
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
2018/07/12 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
Python中的 enum 模块源码详析
2019/01/09 Python
详解python深浅拷贝区别
2019/06/24 Python
Prototype如何实现页面局部定时刷新
2013/08/06 面试题
家长对学生的评语
2014/04/18 职场文书
2014和解协议书范文
2014/09/15 职场文书
2014客服代表实习自我鉴定
2014/09/18 职场文书
无工作证明怎么写
2015/06/15 职场文书
评估“风险”创业计划的几大要点
2019/08/12 职场文书
【海涛dota解说】DCG联赛第一周 LGD VS DH
2022/04/01 DOTA