【小(xiǎo)編推薦】ThinkPHP3.2——數(shù)據庫"↔驅動

2014-06-26   | &→∏ε↓nbsp; 發布者:梁國(guó)✘ 芳   |  ↔" 查看(kàn):3320次

Thinkphp

默認的(de)數(shù)據庫驅動位于Think\Db\Driver命名空(kōng)間(jiān)下(xià)面,驅動類必須¶<​繼承Think\Db類,每個(gè)數(shù)據庫驅動必須要(yào)實現(xiàn)的(d±♦δπe)接口方法包括(具體(tǐ)參數(shù)可(k‌♠×ě)以參考現(xiàn)有(yǒu)的(de)數(shù)據庫驅動≤≈類庫):

驅動方法 方法說(shuō)明(míng)
架構方法 __construct($config='')
數(shù)據庫連接方法 connect($config='',$linkNum=×≠0,$force=false)
釋放(fàng)查詢方法 free()
查詢操作(zuò)方法 query($str)
執行(xíng)操作(zuò)方法 execute($str)
開(kāi)啓事(shì)務方法 startTrans()
事(shì)務提交方法 commit()
事(shì)務回滾方法 rollback()
獲取查詢數(shù)據方法 getAll()
獲取字段信息方法 getFields($tableName)
獲取數(shù)據庫的(de)表 getTables($dbName='')
關閉數(shù)據庫方法 close()
獲取錯(cuò)誤信息方法 error()
SQL安全過濾方法 escapeString($str)

數(shù)據庫的(de)CURD接口方法(通(tōng)常≤¶£這(zhè)些(xiē)方法無需重新定義)

方法 說(shuō)明(míng)
寫入 insert($data,$options=a↕₹'rray(),$replace=false)↔©
更新 update($data,$options)
删除 delete($options=array())
查詢 select($options=array())

介于不(bù)同數(shù)據庫的(de)"♠₽查詢方法存在區(qū)别,所以經常需要(yào)對(duì)¶→£α查詢的(de)語句進行(xíng)重新定義,這φλ×™(zhè)就(jiù)需要(yào)修改針對(duì)查詢的(de)♥☆↕™selectSql屬性。該屬性定義了(le)當前數(shù)據庫驅動的(de)查詢表達式,默認的​λ(de)定義是(shì):

  1. 'SELECT%DISTINCT% %FIELD%  £¶"FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAλ∑♣VING%%ORDER%%LIMIT% %union%'"&

驅動可(kě)以更改或者删除個(gè)别查詢定義,或者™σ‌¶更改某個(gè)替換字符串的(de)解析方法,這(zhè)些≈​(xiē)方法包括:

方法名 說(shuō)明(míng) 對(duì)應
parseTable 數(shù)據庫表名解析 %TABLE%
parseWhere 數(shù)據庫查詢條件(jiàn)解析 %WHERE%
parseLimit 數(shù)據庫查詢Limit解析 %LIMIT%
parseJoin 數(shù)據庫JOIN查詢解析 %JOIN%
parseOrder 數(shù)據庫查詢排序解析 %ORDER%
parseGroup 數(shù)據庫group查詢解析 %GROUP%
parseHaving 數(shù)據庫having解析 %HAVING%
parseDistinct 數(shù)據庫distinct解析 %DISTINCT%
parseunion 數(shù)據庫union解析 %union%
parseField 數(shù)據庫字段解析 %FIELD%

驅動的(de)其他(tā)方法根據自(zì)身(shēn)驅動需要(€←φyào)和(hé)特性進行(xíng)添加,例≈γλ≈如(rú),有(yǒu)些(xiē)數(shù)據庫的(de)特殊性,需要₩>(yào)覆蓋父類Db類中的(de)解析和(hé)過¶®濾方法,包括:

方法名 說(shuō)明(míng)
parseKey 數(shù)據庫字段名解析
parseValue 數(shù)據庫字段值解析
parseSet 數(shù)據庫set分(fēn)析
parseLock 數(shù)據庫鎖機(jī)制(zhì)

定義了(le)驅動擴展後,需要(yào)使用(yòng)的φβ&§(de)時(shí)候,設置相(xiàng)應的(de)數(shù≤♦•)據庫類型即可(kě):

  1. 'DB_TYPE'=>'odbc', // 數(shù)據庫類型配置不(bù)區(qū)分(fēn)大(dà)小(₩•$xiǎo)寫