本文实例讲述了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', // 数据库类型配置不区分大小写