Thinkphp 框架扩展之数据库驱动常用方法小结

本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

(0)

相关推荐

  • thinkPHP2.1自定义标签库的导入方法详解

    本文详细讲述了thinkPHP2.1自定义标签库的导入方法.分享给大家供大家参考,具体如下: TP的手册似乎跟不上节奏, 对自定义标签只是寥寥几句, 摸索了N久, 终于将自定义的标签进行了导入. 心得如下: 1. 情况:  新建自定义的标签库类: @.Mylib.Tag.TagLibTest - 懂TP的应该知道这代表的路径 使用Examples下的Tag演示文件 <?php // +--------------------------------------------------------

  • thinkPHP5 tablib标签库自定义方法详解

    本文实例讲述了thinkPHP5 tablib标签库自定义方法.分享给大家供大家参考,具体如下: 官方文档的标签库使用教程没有写得太细,自己摸索出来了一些. 先放一段写好的面包碎代码 namespace app\Common\taglib; use \think\template\TagLib; class UntilTag extends TagLib { protected $tags = array( 'breadcrumb' => array('attr' => 'name','clo

  • thinkphp框架类库扩展操作示例

    本文实例讲述了thinkphp框架类库扩展操作.分享给大家供大家参考,具体如下: 官方文档 http://document.thinkphp.cn/manual_3_2.html#lib_extend 自定义命名空间 在项目的application->common->conf文件下添加 'AUTOLOAD_NAMESPACE' => array( 'Lib' => APP_PATH . 'Home\Lib', ) Home\Lib 表示扩展路径在application->ho

  • thinkphp5框架实现的自定义扩展类操作示例

    本文实例讲述了thinkphp5框架实现的自定义扩展类操作.分享给大家供大家参考,具体如下: 1.在extend目录下新建要定义的扩展类:如下图所示 2.定义扩展类的内容 <?php namespace org; /** * */ class Auth { public function __construct() { # code... } public function xx() { echo 'xxxxxxxxxxxxxx'; } } 3.在控制器中调用自定义的扩展类 <?php nam

  • ThinkPHP分组下自定义标签库实例

    本文实例讲述了ThinkPHP分组下自定义标签库的实现方法.分享给大家供大家参考.具体如下: 自定义标签库应该位于ThinkPHP\\Extend\\Driver\\TagLib目录下 1 新建标签类库文件名为TagLibBlog.class.php. 2 编辑刚才新建的类库文件,新建一个类,继承TagLib父类 复制代码 代码如下: import('TagLib'); class TagLibBlog extends TagLib { } 3 在类中声明一个protected成员变量$tags

  • Thinkphp 框架扩展之标签库驱动原理与用法分析

    本文实例讲述了Thinkphp 框架扩展之标签库驱动原理与用法.分享给大家供大家参考,具体如下: 在Think\Template中标签库的体现是采用XML命名空间的方式.每个标签库对应一个标签库驱动类,每个驱动类负责对标签库中的所有标签的解析. 标签库驱动类的作用其实就是把某个标签定义解析成为有效的模版文件(可以包括PHP语句或者HTML标签),标签库驱动的命名空间位于 Think\Template\TagLib,标签库驱动必须继承Think\Template\TagLib类,例如: names

  • 老生常谈ThinkPHP中的行为扩展和插件(推荐)

    原理分析 将标签与类之间的对应关系(如'app_init'=>array('Common\Behavior\InitHook')),通过Hook类中import或add方法,加载到Hook类中静态变量$tags中.当执行Hook中静态方法listen或者exec方法的时候(listen方法中调用了exec),实例化标签对应的类,调用相应的方法(如果是插件,调用传递的方法,如果是行为,调用run方法). Hook中exec方法定义如下: static public function exec($n

  • Thinkphp 框架扩展之类库扩展操作详解

    本文实例讲述了Thinkphp 框架扩展之类库扩展操作.分享给大家供大家参考,具体如下: 类库扩展 ThinkPHP的类库主要包括公共类库和应用类库,都是基于命名空间进行定义和扩展的.只要按照规范定义,都可以实现自动加载. 公共类库 公共类库通常是指ThinkPHP/Library目录下面的类库,例如: Think目录:系统核心类库 Org目录:第三方公共类库 这些目录下面的类库都可以自动加载,你只要把相应的类库放入目录中,然后添加或者修改命名空间定义. 你可以在Org/Util/目录下面添加一

  • ThinkPHP应用模式扩展详解

    ThinkPHP的应用模式使得开发人员对核心框架进行改造较以往更为得心应手,并且可以让你的应用适应更多的环境和不同的需求.每个应用模式都有自己的模式定义文件,相对于ThinkPHP3.1版本,ThinkPHP3.2版本对应用模式的扩展更加明确和清晰,在ThinkPHP3.1版本中定义了Cli.Lite.Thin.AMF.PHPRPC.REST模式,其定义方式和ThinkPHP3.2版本的方式大同小异,如有需要可以参考修改,其中Cli模式被ThinkPHP框架内置,不用单独定义Cli模式即可正常使

  • thinkPHP3.2.2框架行为扩展及demo示例

    本文实例讲述了thinkPHP3.2.2框架行为扩展.分享给大家供大家参考,具体如下: 首先介绍一下行为扩展类,本人愚钝,还是借用tp手册上的来说: 行为(Behavior)是一个比较抽象的概念,你可以想象成在应用执行过程中的一个动作或者处理,在框架的执行流程中,各个位置都可以有行为产生,例如路由检测是一个行为,静态缓存是一个行为,用户权限检测也是行为,大到业务逻辑,小到浏览器检测.多语言检测等等都可以当做是一个行为,甚至说你希望给你的网站用户的第一次访问弹出Hello,world!这些都可以看

  • ThinkPHP框架设计及扩展详解

    ThinkPHP框架是国内知名度很高应用很广泛的php框架,我们从一些简单的开发示例中来深入了解一下这个框架给我们带来的开发便捷性,以及游刃有余的扩展设计.同时也从源码分析的角度看看框架的一些不足,尽量做全面客观的评价.这里假设大家已经使用过ThinkPHP框架,基本使用方法请参考官方文档. 一.框架分层及url路由 框架的安装非常简单,下载后放入web服务器的目录即可,但是建议大家不要用默认的入口文件位置,而是放入单独的目录,便于保护代码和数据.例如我的入口文件和web服务器配置目录在web目

随机推荐