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控制用户的浏览器--ob*函数的使用说明
Mar 16 PHP
在字符串指定位置插入一段字符串的php代码
Feb 16 PHP
php图片的裁剪与缩放生成符合需求的缩略图
Jan 11 PHP
教你如何开启shopnc b2b2c 伪静态
Oct 21 PHP
php实现对象克隆的方法
Jun 20 PHP
记录一次排查PHP脚本执行卡住的问题
Dec 27 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
Jul 31 PHP
PHP序列化的四种实现方法与横向对比
Nov 29 PHP
php快速导入大量数据的实例方法
Sep 23 PHP
Laravel框架实现文件上传的方法分析
Sep 29 PHP
PHP数组与字符串互相转换实例
May 05 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+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
2007/02/15 PHP
php中explode与split的区别介绍
2012/10/03 PHP
PHP页面间参数传递的四种方法详解
2013/06/09 PHP
C#使用PHP服务端的Web Service通信实例
2014/04/08 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
2014/10/30 PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
2015/05/13 PHP
JS面向对象编程 for Cookie
2010/09/19 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
2015/04/17 Javascript
js将滚动条滚动到指定位置的简单实现方法
2016/06/25 Javascript
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
JS实现根据密码长度显示安全条功能
2017/03/08 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
2019/01/21 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
vue 插槽简介及使用示例
2020/11/19 Vue.js
在Windows8上的搭建Python和Django环境
2014/07/03 Python
Python中的super用法详解
2015/05/28 Python
Python实现数据库编程方法详解
2015/06/09 Python
python安装与使用redis的方法
2016/04/19 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
linecache模块加载和缓存文件内容详解
2018/01/11 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
2018/12/30 Python
python 字典的打印实现
2019/09/26 Python
wxpython绘制圆角窗体
2019/11/18 Python
Python爬取365好书中小说代码实例
2020/02/28 Python
Python3 pickle对象串行化代码实例解析
2020/03/23 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
武汉高蓝德国际.net机试
2016/06/24 面试题
电大学习个人自我评价范文
2013/10/04 职场文书
公司清洁工岗位职责
2013/12/14 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
Python pygame实现中国象棋单机版源码
2021/06/20 Python
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL