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 相关文章推荐
递归列出所有文件和目录
Oct 09 PHP
在php MYSQL中插入当前时间
Apr 06 PHP
php学习之变量的使用
May 29 PHP
php eval函数用法 PHP中eval()函数小技巧
Oct 31 PHP
CodeIgniter实现更改view文件夹路径的方法
Jul 04 PHP
php版本的cron定时任务执行器使用实例
Aug 19 PHP
ThinkPHP框架里隐藏index.php
Apr 12 PHP
php微信公众号开发模式详解
Nov 28 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
Dec 24 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
Aug 15 PHP
PHP使用ActiveMQ实现消息队列的方法详解
May 31 PHP
JS操作XML中DTD介绍及使用方法分析
Jul 04 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面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
php模板中出现空行解决方法
2011/03/08 PHP
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
php 猴子摘桃的算法
2017/06/20 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
js 判断checkbox是否选中的操作方法
2012/11/09 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
JS中产生标识符方式的演变
2015/06/12 Javascript
javascript点击按钮实现隐藏显示切换效果
2016/02/03 Javascript
JavaScript模拟数组合并concat
2016/03/06 Javascript
JS与HTML结合使用marquee标签实现无缝滚动效果代码
2016/07/05 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
微信小程序授权获取用户详细信息openid的实例详解
2017/09/20 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
详解使用JWT实现单点登录(完全跨域方案)
2019/08/02 Javascript
js如何验证密码强度
2020/03/18 Javascript
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
Python实现获取某天是某个月中的第几周
2015/02/11 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
对PyQt5中树结构的实现方法详解
2019/06/17 Python
python装饰器练习题及答案
2019/11/01 Python
selenium 多窗口切换的实现(windows)
2020/01/18 Python
Keras之fit_generator与train_on_batch用法
2020/06/17 Python
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
共产党员公开承诺践诺书
2014/05/28 职场文书
合伙购房协议样本
2014/10/06 职场文书
小学教育见习总结
2015/06/23 职场文书
JavaScript实现栈结构详细过程
2021/12/06 Javascript
Android Studio 计算器开发
2022/05/20 Java/Android