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 相关文章推荐
ob_start(),ob_start('ob_gzhandler')使用
Dec 25 PHP
PHP 裁剪图片成固定大小代码方法
Sep 09 PHP
php 提速工具eAccelerator 配置参数详解
May 16 PHP
php中explode与split的区别介绍
Oct 03 PHP
thinkphp数据查询和遍历数组实例
Nov 28 PHP
Sublime里直接运行PHP配置方法
Nov 28 PHP
php检查页面是否被百度收录
Oct 28 PHP
实例讲解php数据访问
May 09 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
Nov 25 PHP
thinkPHP实现的联动菜单功能详解
May 05 PHP
PHP支付宝当面付2.0代码
Dec 21 PHP
如何让PHP编码更加好看利于阅读
May 12 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 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
理解php原理的opcodes(操作码)
2010/10/26 PHP
php标签云的实现代码
2012/10/10 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
PHP使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
xtree.js 代码
2007/03/13 Javascript
fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器
2014/06/26 Javascript
node.js中的querystring.stringify方法使用说明
2014/12/10 Javascript
简述AngularJS的控制器的使用
2015/06/16 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
2016/12/18 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
2017/03/27 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
2017/04/26 Javascript
全选复选框JavaScript编写小结(附代码)
2017/08/16 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
js自定义trim函数实现删除两端空格功能
2018/02/09 Javascript
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
2013/12/04 Python
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
Python中类型检查的详细介绍
2017/02/13 Python
Python中如何导入类示例详解
2019/04/17 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
python openpyxl模块的使用详解
2021/02/25 Python
Android本地应用打开方法——通过html5写连接
2016/03/11 HTML / CSS
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
纠风工作实施方案
2014/03/15 职场文书
学习保证书范文
2014/04/30 职场文书
优秀团员事迹材料
2014/12/25 职场文书
总结会主持词
2015/07/02 职场文书