CDbConnection
鍖 | system.db |
---|---|
缁ф壙 | class CDbConnection » CApplicationComponent » CComponent |
瀹炵幇 | IApplicationComponent |
婧愯嚜 | 1.0 |
鐗堟湰 | $Id: CDbConnection.php 3515 2011-12-28 12:29:24Z mdomba $ |
婧愮爜 | framework/db/CDbConnection.php |
CDbConnection涓CDbCommand, CDbDataReader 鍜 CDbTransaction涓璧锋彁渚涗簡鏍规嵁 DBMS 閫氱敤 API 鏉ヨ闂暟鎹姛鑳姐 瀹冧滑鏄PDO PHP 鎵╁睍鐨勭畝鍖栥
瑕佸缓绔嬩竴涓繛鎺ワ紝鍦ㄦ寚瀹connectionString, username 鍜 password涔嬪悗锛 璁剧疆active涓簍rue锛屻
涓嬮潰鐨勪緥瀛愭樉绀轰簡鎬庢牱鍒涘缓涓涓狢DbConnection瀹炰緥鍜屽缓绔嬪疄闄呯殑杩炴帴锛 :
$connection=new CDbConnection($dsn,$username,$password); $connection->active=true;
鍦―B杩炴帴寤虹珛涔嬪悗锛屽彲浠ユ墽琛屼竴涓儚涓嬮潰杩欐牱鐨 SQL 璇彞锛
$command=$connection->createCommand($sqlStatement); $command->execute(); // a non-query SQL statement execution // or execute an SQL query and fetch the result set $reader=$command->query(); // each $row is an array representing a row of data foreach($reader as $row) ...
涔熻兘鎵ц涓涓噯澶囧ソ鐨 SQL 璇彞锛屽苟缁戝畾鍙傛暟鍒板噯澶囧ソ鐨 SQL:
$command=$connection->createCommand($sqlStatement); $command->bindParam($name1,$value1); $command->bindParam($name2,$value2); $command->execute();
瑕佷娇鐢ㄤ簨鍔★紝鍍忎笅闈㈣繖鏍峰仛锛
$transaction=$connection->beginTransaction(); try { $connection->createCommand($sql1)->execute(); $connection->createCommand($sql2)->execute(); //.... other SQL executions $transaction->commit(); } catch(Exception $e) { $transaction->rollBack(); }
CDbConnection涔熸彁渚涗竴濂楁柟娉曟潵鏀寔璁剧疆鍜屾煡璇㈢壒瀹氱殑DBMS灞炴э紝 渚嬪 nullConversion銆
鍥犱负CDbConnection瀹炵幇浜咺ApplicationComponent鎺ュ彛锛屽畠鑳借鐢ㄤ綔涓涓簲鐢ㄧ▼搴忕粍浠讹紝 骞跺湪搴旂敤绋嬪簭涓繘琛岄厤缃 濡備笅锛
array( 'components'=>array( 'db'=>array( 'class'=>'CDbConnection', 'connectionString'=>'sqlite:path/to/dbfile', ), ), )
鍏叡灞炴
灞炴 | 绫诲瀷 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|---|
active | boolean | 杩斿洖DB杩炴帴鏄惁宸茬粡寤虹珛銆 | CDbConnection |
attributes | array | 杩斿洖鍏堝墠涓烘暟鎹簱杩炴帴鏄惧紡璁剧疆鐨勫睘鎬с | CDbConnection |
autoCommit | boolean | 杩斿洖鏄惁鍒涘缓鎴栨洿鏂版暟鎹簱璁板綍灏嗚嚜鍔ㄦ彁浜ゃ | CDbConnection |
autoConnect | boolean | 鏁版嵁搴撴槸鍚﹀簲鑷姩寤虹珛杩炴帴 姝ょ粍浠跺皢琚垵濮嬪寲銆傞粯璁や负true銆傛敞鎰忥紝杩欎釜灞炴т粎浠呮湁鏁堟灉褰 CDbConnection瀵硅薄琚敤浣滀竴涓簲鐢ㄧ▼搴忕粍浠躲 | CDbConnection |
behaviors | array | 杩欎釜搴旂敤缁勪欢闄勫姞鐨勮涓恒 杩欐琛屼负灏嗗湪搴旂敤缁勪欢璋冪敤init鏃堕檮鍔犲湪搴旂敤缁勪欢涓娿 璇峰弬鐓CModel::behaviors濡備綍鎸囧畾姝ゅ睘鎬у笺 | CApplicationComponent |
charset | string | 鐢ㄤ簬鏁版嵁搴撹繛鎺harset瀛楃涓层傝繖涓睘鎬т粎浠呯敤浜
MySQL 鍜 PostgreSQL 鏁版嵁搴撱傞粯璁や负 null,
鎰忓懗鐫浣跨敤姝ゆ暟鎹簱鎸囧畾鐨勯粯璁ょ殑charset銆
娉ㄦ剰濡傛灉浣犱娇鐢 GBK 鎴 BIG5 锛岄偅涔堟帹鑽愭洿鏂板埌 PHP 5. |
CDbConnection |
clientVersion | string | 杩斿洖鏁版嵁搴撻┍鍔ㄧ▼搴忕殑鐗堟湰淇℃伅銆 | CDbConnection |
columnCase | mixed | 杩斿洖鍒楀悕绉扮殑澶у皬鍐欐儏鍐 | CDbConnection |
commandBuilder | CDbCommandBuilder | 杩斿洖涓哄綋鍓岲B杩炴帴鐨凷QL鍛戒护鐢熸垚鍣ㄣ | CDbConnection |
connectionStatus | string | 杩斿洖杩炴帴鐨勭姸鎬併 | CDbConnection |
connectionString | string | 鏁版嵁婧愬悕绉版垨 DSN锛屽寘鍚繛鎺ュ埌鏁版嵁搴撴墍闇鐨勪俊鎭 | CDbConnection |
currentTransaction | CDbTransaction | 杩斿洖褰撳墠娲诲姩鐨勪簨鍔° | CDbConnection |
driverMap | array | PDO椹卞姩绋嬪簭鍜宻chema绫诲悕涔嬮棿鐨勬槧灏勩 浣跨敤璺緞鍒悕鎸囧畾涓涓 schema 绫汇 | CDbConnection |
driverName | string | 杩斿洖鐨勬暟鎹簱椹卞姩绋嬪簭鐨勫悕绉般 | CDbConnection |
emulatePrepare | boolean | 鏄惁鎵撳紑鍑嗗妯℃嫙銆傞粯璁や负 false锛 鎰忓懗鐫PDO灏嗗噯澶囦娇鐢ㄦ湰鍦伴澶囨敮鎸侊紝濡傛灉鍙敤銆傚浜庢煇浜涙暟鎹簱 (濡 MySQL), 杩欏皢闇瑕佽缃负true 浠ヨ嚦浜 PDO 鑳芥ā鎷熻棰勫鏀寔 缁曡繃buggy鏈湴棰勫鏀寔銆傛敞鎰忥紝杩欎釜灞炴т粎浠呭湪PHP 5. | CDbConnection |
enableParamLogging | boolean | 鏄惁璁板綍鐨勫肩粦瀹氬埌涓涓噯澶囩殑SQL璇彞銆 榛樿涓 false銆傚湪寮鍙戦樁娈碉紝浣犲簲璇ヨ冭檻璁剧疆杩欎釜灞炴т负true 浠ヨ嚦浜庡弬鏁板艰兘琚粦瀹氬埌SQL璇彞浠ヨ褰曠敤浜庨珮搴︾洰鐨勩 浣犲簲璇ョ煡閬撹褰曞弬鏁板间唬浠锋槸楂樻槀鐨勶紝 灏嗗緢澶х▼搴﹀奖鍝嶄綘鐨勫簲鐢ㄧ▼搴忕殑鎬ц兘銆 | CDbConnection |
enableProfiling | boolean | 姝e湪鎵ц鐨凷QL璇彞鏄惁鍚敤鍒嗘瀽銆 榛樿涓 false銆傝繖涓富瑕 鍚敤瀹冧富瑕佺敤浜庡紑鍙戦樁娈垫壘鍑篠QL鎵ц鐨勭摱棰堛 | CDbConnection |
initSQLs | array | DB杩炴帴寤虹珛鍚庢墽琛岀殑SQL璇彞鍒楄〃銆 | CDbConnection |
isInitialized | boolean | 妫鏌ュ簲鐢ㄧ粍浠舵槸鍚﹀凡缁忓垵濮嬪寲銆 | CApplicationComponent |
lastInsertID | string | 杩斿洖鏈鍚庝竴涓彃鍏ョ殑琛岀殑ID鎴栧簭鍒楀笺 | CDbConnection |
nullConversion | mixed | 杩斿洖null涓巈mpty瀛楃涓插浣曡浆鍖栫殑鎯呭喌銆 | CDbConnection |
password | string | 寤虹珛鏁版嵁杩炴帴鐨勫瘑鐮併傞粯璁や负绌哄瓧绗︿覆銆 | CDbConnection |
pdoClass | string | 鑷畾涔塒DO灏佽绫汇 | CDbConnection |
pdoInstance | PDO | 杩斿洖PDO瀹炰緥銆 | CDbConnection |
persistent | boolean | 杩斿洖鏁版嵁搴撹繛鎺ユ槸鍚︽寔涔呯殑銆 | CDbConnection |
prefetch | boolean | 杩斿洖鏁版嵁搴撹繛鎺ユ槸鍚﹀彲鎵ц鏁版嵁棰勮幏鍙栥 | CDbConnection |
queryCacheID | string | 缂撳瓨搴旂敤绋嬪簭缁勪欢鐨処D锛岀敤浜庢煡璇㈢紦瀛樸 榛樿涓'cache'锛屽畠鎸囩殑鏄富缂撳瓨搴旂敤绋嬪簭缁勪欢銆 璁剧疆杩欎釜灞炴т负false锛屽鏋滀綘鎯崇鐢ㄦ煡璇㈢紦瀛樸 | CDbConnection |
queryCachingCount | integer | 涓嬫灏嗚缂撳瓨鐨凷QL璇彞鐨勬暟鐩 濡傛灉瀹冩槸 0锛屽嵆浣挎煡璇㈢紦瀛樿鍚敤锛屾煡璇篃涓嶄細琚紦瀛樸 娉ㄦ剰姣忔鎵ц涓鏉QL璇彞涔嬪悗 (鏄惁鍦―B鏈嶅姟鍣ㄤ笂鎵ц鎴栦粠鏌ヨ缂撳瓨涓幏鍙)锛 杩欎釜灞炴у皢琚噺灏1鑷0銆 | CDbConnection |
queryCachingDependency | CCacheDependency | 褰撴煡璇㈢粨鏋滀繚瀛樺埌缂撳瓨鏃讹紝浣跨敤鐨勪緷璧栥 | CDbConnection |
queryCachingDuration | integer | 鏌ヨ缁撴灉琚繚鐣欏湪缂撳瓨涓湁鏁堢殑绉掓暟銆 浣跨敤0鎴栬礋鏁板兼寚绀轰笉缂撳瓨鏌ヨ缁撴灉 (榛樿 behavior). | CDbConnection |
schema | CDbSchema | 杩斿洖褰撳墠杩炴帴鐨勬暟鎹簱缁撴瀯 | CDbConnection |
schemaCacheID | string | 缂撳瓨搴旂敤绋嬪簭缁勪欢鐨処D锛岀敤浜庣紦瀛樿〃鐨勫厓鏁版嵁銆 榛樿涓'cache' 瀹冩寚鐨勬槸涓荤紦瀛樺簲鐢ㄧ▼搴忕粍浠躲 濡傛灉瑕佺鐢ㄧ紦瀛樿〃鐨勫厓鏁版嵁锛屾灞炴ц缃负false銆 | CDbConnection |
schemaCachingDuration | integer | 鏁版嵁琛ㄤ腑鍏冩暟鎹湪缂撳瓨涓繚瀛樼殑绉掗挓鏁般 浣跨敤0鎴栬礋鍊兼寚绀轰笉缂撳瓨schema銆 濡傛灉澶т簬0鍜屾鏁帮紝cache琚惎鐢紝琛ㄧ殑鍏冩暟鎹皢琚紦瀛樸 | CDbConnection |
schemaCachingExclude | array | 鍏冩暟鎹笉琚紦瀛樼殑鍒楃殑鍒楄〃銆傞粯璁や负绌哄瓧绗︿覆銆 | CDbConnection |
serverInfo | string | 杩斿洖DBMS鏈嶅姟鍣ㄧ殑淇℃伅銆 | CDbConnection |
serverVersion | string | 杩斿洖DBMS鏈嶅姟鍣ㄧ殑鐗堟湰淇℃伅銆 | CDbConnection |
stats | array | 杩斿洖SQL鎵ц鐨勭粺璁$粨鏋溿 | CDbConnection |
tablePrefix | string | 琛ㄥ悕绉扮殑榛樿鍓嶇紑銆傞粯璁や负 null锛屾剰鍛崇潃娌℃湁琛ㄥ墠缂銆 閫氳繃璁剧疆杩欎釜灞炴э紝浠讳綍鏍囪鍍 '{{tableName}}' 鍦 CDbCommand::text 灏 'prefixTableName'鏇挎崲锛 杩欓噷 'prefix' 鎸囩殑鏄繖涓睘鎬у笺 | CDbConnection |
timeout | integer | 杩斿洖杩炴帴鐨勮秴鏃惰缃 | CDbConnection |
username | string | 寤虹珛鏁版嵁杩炴帴鐨勭敤鎴峰悕銆傞粯璁や负绌哄瓧绗︿覆銆 | CDbConnection |
鍏叡鏂规硶
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
__call() | 濡傛灉绫讳腑娌℃湁璋冪殑鏂规硶鍚嶏紝鍒欒皟鐢ㄨ繖涓柟娉曘 | CComponent |
__construct() | 鏋勯犲嚱鏁般 | CDbConnection |
__get() | 杩斿洖涓涓睘鎬у笺佷竴涓簨浠跺鐞嗙▼搴忓垪琛ㄦ垨涓涓涓哄悕绉般 | CComponent |
__isset() | 妫鏌ヤ竴涓睘鎬ф槸鍚︿负null銆 | CComponent |
__set() | 璁剧疆涓涓粍浠剁殑灞炴у笺 | CComponent |
__sleep() | 搴忓垪鍖栨椂鍏抽棴杩炴帴銆 | CDbConnection |
__unset() | 璁剧疆涓涓粍浠剁殑灞炴т负null銆 | CComponent |
asa() | 杩斿洖杩欎釜鍚嶅瓧鐨勮涓哄璞° | CComponent |
attachBehavior() | 闄勫姞涓涓涓哄埌缁勪欢銆 | CComponent |
attachBehaviors() | 闄勫姞涓涓涓哄垪琛ㄥ埌缁勪欢銆 | CComponent |
attachEventHandler() | 涓轰簨浠堕檮鍔犱竴涓簨浠跺鐞嗙▼搴忋 | CComponent |
beginTransaction() | 鍚姩浜嬪姟銆 | CDbConnection |
cache() | 璁剧疆鍏充簬鏌ヨ缂撳瓨鐨勫弬鏁般 | CDbConnection |
canGetProperty() | 纭畾灞炴ф槸鍚﹀彲璇汇 | CComponent |
canSetProperty() | 纭畾灞炴ф槸鍚﹀彲鍐欍 | CComponent |
createCommand() | 鍒涘缓鐢ㄤ簬鎵ц鐨勫懡浠ゃ | CDbConnection |
detachBehavior() | 浠庣粍浠朵腑鍒嗙涓涓涓恒 | CComponent |
detachBehaviors() | 浠庣粍浠朵腑鍒嗙鎵鏈夎涓恒 | CComponent |
detachEventHandler() | 鍒嗙涓涓瓨鍦ㄧ殑浜嬩欢澶勭悊绋嬪簭銆 | CComponent |
disableBehavior() | 绂佺敤涓涓檮鍔犺涓恒 | CComponent |
disableBehaviors() | 绂佺敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 | CComponent |
enableBehavior() | 鍚敤涓涓檮鍔犺涓恒 | CComponent |
enableBehaviors() | 鍚敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 | CComponent |
evaluateExpression() | 璁$畻涓涓狿HP琛ㄨ揪寮忥紝鎴栨牴鎹粍浠朵笂涓嬫枃鎵ц鍥炶皟銆 | CComponent |
getActive() | 杩斿洖DB杩炴帴鏄惁宸茬粡寤虹珛銆 | CDbConnection |
getAttribute() | 鑾峰彇鎸囧畾鐨勬暟鎹簱杩炴帴灞炴т俊鎭 | CDbConnection |
getAttributes() | 杩斿洖鍏堝墠涓烘暟鎹簱杩炴帴鏄惧紡璁剧疆鐨勫睘鎬с | CDbConnection |
getAutoCommit() | 杩斿洖鏄惁鍒涘缓鎴栨洿鏂版暟鎹簱璁板綍灏嗚嚜鍔ㄦ彁浜ゃ | CDbConnection |
getAvailableDrivers() | 杩斿洖涓涓彲鐢ㄧ殑PDO椹卞姩绋嬪簭鐨勫垪琛ㄣ | CDbConnection |
getClientVersion() | 杩斿洖鏁版嵁搴撻┍鍔ㄧ▼搴忕殑鐗堟湰淇℃伅銆 | CDbConnection |
getColumnCase() | 杩斿洖鍒楀悕绉扮殑澶у皬鍐欐儏鍐 | CDbConnection |
getCommandBuilder() | 杩斿洖涓哄綋鍓岲B杩炴帴鐨凷QL鍛戒护鐢熸垚鍣ㄣ | CDbConnection |
getConnectionStatus() | 杩斿洖杩炴帴鐨勭姸鎬併 | CDbConnection |
getCurrentTransaction() | 杩斿洖褰撳墠娲诲姩鐨勪簨鍔° | CDbConnection |
getDriverName() | 杩斿洖鐨勬暟鎹簱椹卞姩绋嬪簭鐨勫悕绉般 | CDbConnection |
getEventHandlers() | 杩斿洖涓涓簨浠剁殑闄勫姞澶勭悊绋嬪簭鍒楄〃銆 | CComponent |
getIsInitialized() | 妫鏌ュ簲鐢ㄧ粍浠舵槸鍚﹀凡缁忓垵濮嬪寲銆 | CApplicationComponent |
getLastInsertID() | 杩斿洖鏈鍚庝竴涓彃鍏ョ殑琛岀殑ID鎴栧簭鍒楀笺 | CDbConnection |
getNullConversion() | 杩斿洖null涓巈mpty瀛楃涓插浣曡浆鍖栫殑鎯呭喌銆 | CDbConnection |
getPdoInstance() | 杩斿洖PDO瀹炰緥銆 | CDbConnection |
getPdoType() | 鎸囧畾鐨凱HP鏁版嵁绫诲瀷鍐冲畾PDO鏁版嵁绫诲瀷銆 | CDbConnection |
getPersistent() | 杩斿洖鏁版嵁搴撹繛鎺ユ槸鍚︽寔涔呯殑銆 | CDbConnection |
getPrefetch() | 杩斿洖鏁版嵁搴撹繛鎺ユ槸鍚﹀彲鎵ц鏁版嵁棰勮幏鍙栥 | CDbConnection |
getSchema() | 杩斿洖褰撳墠杩炴帴鐨勬暟鎹簱缁撴瀯 | CDbConnection |
getServerInfo() | 杩斿洖DBMS鏈嶅姟鍣ㄧ殑淇℃伅銆 | CDbConnection |
getServerVersion() | 杩斿洖DBMS鏈嶅姟鍣ㄧ殑鐗堟湰淇℃伅銆 | CDbConnection |
getStats() | 杩斿洖SQL鎵ц鐨勭粺璁$粨鏋溿 | CDbConnection |
getTimeout() | 杩斿洖杩炴帴鐨勮秴鏃惰缃 | CDbConnection |
hasEvent() | 纭畾涓涓簨浠舵槸鍚﹀畾涔夈 | CComponent |
hasEventHandler() | 妫鏌ヤ簨浠舵槸鍚︽湁闄勫姞鐨勫鐞嗙▼搴忋 | CComponent |
hasProperty() | 纭畾灞炴ф槸鍚﹁瀹氫箟銆 | CComponent |
init() | 鍒濆鍖栫粍浠躲 | CDbConnection |
quoteColumnName() | 鍦ㄤ竴涓煡璇腑寮曠敤涓涓垪鍚嶇О銆 | CDbConnection |
quoteTableName() | 鍦ㄤ竴涓煡璇腑寮曠敤鐨勮〃鍚嶃 | CDbConnection |
quoteValue() | 鍦ㄤ竴涓煡璇腑寮曠敤涓涓瓧绗︿覆鍊笺 | CDbConnection |
raiseEvent() | 鍙戣捣涓涓簨浠躲 | CComponent |
setActive() | 鎵撳紑鎴栧叧闂璂B杩炴帴銆 | CDbConnection |
setAttribute() | 璁剧疆鏁版嵁搴撹繛鎺ヤ笂鐨勪竴涓睘鎬с | CDbConnection |
setAttributes() | 璁剧疆涓濂楁暟鎹簱杩炴帴鐨勫睘鎬с | CDbConnection |
setAutoCommit() | 璁剧疆鏄惁鍒涘缓鎴栨洿鏂版暟鎹簱璁板綍灏嗚嚜鍔ㄦ彁浜ゃ | CDbConnection |
setColumnCase() | 璁剧疆鍒楀悕绉扮殑澶у皬鍐欍 | CDbConnection |
setNullConversion() | 璁剧疆null鍜宔mpty 瀛楃涓插浣曡浆鎹€ | CDbConnection |
setPersistent() | 璁剧疆姝よ繛鎺ユ槸鍚︽槸鎸佷箙杩炴帴銆 | CDbConnection |
鍙椾繚鎶ゆ柟娉
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
close() | 鍏抽棴褰撳墠杩炴帴鐨勬暟鎹簱杩炴帴銆 | CDbConnection |
createPdoInstance() | 鍒涘缓涓涓 PDO 瀹炰緥銆 | CDbConnection |
initConnection() | 鍒濆鍖栧紑鏀炬暟鎹簱杩炴帴銆 | CDbConnection |
open() | 鎵撳紑鏁版嵁搴撹繛鎺ワ紝濡傛灉瀹冨綋鍓嶆病鏈夋墦寮 | CDbConnection |
灞炴ц缁
杩斿洖DB杩炴帴鏄惁宸茬粡寤虹珛銆
杩斿洖鍏堝墠涓烘暟鎹簱杩炴帴鏄惧紡璁剧疆鐨勫睘鎬с
鍙傝
杩斿洖鏄惁鍒涘缓鎴栨洿鏂版暟鎹簱璁板綍灏嗚嚜鍔ㄦ彁浜ゃ 鏌愪簺 DBMS (濡 sqlite) 鍙兘涓嶆敮鎸佽繖涓壒寰併
鏁版嵁搴撴槸鍚﹀簲鑷姩寤虹珛杩炴帴 姝ょ粍浠跺皢琚垵濮嬪寲銆傞粯璁や负true銆傛敞鎰忥紝杩欎釜灞炴т粎浠呮湁鏁堟灉褰 CDbConnection瀵硅薄琚敤浣滀竴涓簲鐢ㄧ▼搴忕粍浠躲
鐢ㄤ簬鏁版嵁搴撹繛鎺harset瀛楃涓层傝繖涓睘鎬т粎浠呯敤浜
MySQL 鍜 PostgreSQL 鏁版嵁搴撱傞粯璁や负 null,
鎰忓懗鐫浣跨敤姝ゆ暟鎹簱鎸囧畾鐨勯粯璁ょ殑charset銆
娉ㄦ剰濡傛灉浣犱娇鐢 GBK 鎴 BIG5 锛岄偅涔堟帹鑽愭洿鏂板埌
PHP 5.3.6+鍜岄氳繃DSN鎸囧畾 charset 鍍忎笅闈㈣繖鏍
'mysql:dbname=mydatabase;host=127.0.0.1;charset=GBK;'銆
杩斿洖鏁版嵁搴撻┍鍔ㄧ▼搴忕殑鐗堟湰淇℃伅銆
杩斿洖鍒楀悕绉扮殑澶у皬鍐欐儏鍐
杩斿洖涓哄綋鍓岲B杩炴帴鐨凷QL鍛戒护鐢熸垚鍣ㄣ
杩斿洖杩炴帴鐨勭姸鎬併 涓浜 DBMS (濡 sqlite) 鍙兘涓嶆敮鎸佽繖涓壒寰併
鏁版嵁婧愬悕绉版垨 DSN锛屽寘鍚繛鎺ュ埌鏁版嵁搴撴墍闇鐨勪俊鎭
杩斿洖褰撳墠娲诲姩鐨勪簨鍔°
PDO椹卞姩绋嬪簭鍜宻chema绫诲悕涔嬮棿鐨勬槧灏勩 浣跨敤璺緞鍒悕鎸囧畾涓涓 schema 绫汇
杩斿洖鐨勬暟鎹簱椹卞姩绋嬪簭鐨勫悕绉般
鏄惁鎵撳紑鍑嗗妯℃嫙銆傞粯璁や负 false锛 鎰忓懗鐫PDO灏嗗噯澶囦娇鐢ㄦ湰鍦伴澶囨敮鎸侊紝濡傛灉鍙敤銆傚浜庢煇浜涙暟鎹簱 (濡 MySQL), 杩欏皢闇瑕佽缃负true 浠ヨ嚦浜 PDO 鑳芥ā鎷熻棰勫鏀寔 缁曡繃buggy鏈湴棰勫鏀寔銆傛敞鎰忥紝杩欎釜灞炴т粎浠呭湪PHP 5.1.3鍙婁互涓婃湁鏁堛 榛樿鍊间负 null锛岃繖灏嗕笉鏀瑰彉PDO鐨 ATTR_EMULATE_PREPARES 鍊笺
鏄惁璁板綍鐨勫肩粦瀹氬埌涓涓噯澶囩殑SQL璇彞銆 榛樿涓 false銆傚湪寮鍙戦樁娈碉紝浣犲簲璇ヨ冭檻璁剧疆杩欎釜灞炴т负true 浠ヨ嚦浜庡弬鏁板艰兘琚粦瀹氬埌SQL璇彞浠ヨ褰曠敤浜庨珮搴︾洰鐨勩 浣犲簲璇ョ煡閬撹褰曞弬鏁板间唬浠锋槸楂樻槀鐨勶紝 灏嗗緢澶х▼搴﹀奖鍝嶄綘鐨勫簲鐢ㄧ▼搴忕殑鎬ц兘銆
姝e湪鎵ц鐨凷QL璇彞鏄惁鍚敤鍒嗘瀽銆 榛樿涓 false銆傝繖涓富瑕 鍚敤瀹冧富瑕佺敤浜庡紑鍙戦樁娈垫壘鍑篠QL鎵ц鐨勭摱棰堛
DB杩炴帴寤虹珛鍚庢墽琛岀殑SQL璇彞鍒楄〃銆
杩斿洖鏈鍚庝竴涓彃鍏ョ殑琛岀殑ID鎴栧簭鍒楀笺
杩斿洖null涓巈mpty瀛楃涓插浣曡浆鍖栫殑鎯呭喌銆
寤虹珛鏁版嵁杩炴帴鐨勫瘑鐮併傞粯璁や负绌哄瓧绗︿覆銆
鑷畾涔塒DO灏佽绫汇
杩斿洖PDO瀹炰緥銆
杩斿洖鏁版嵁搴撹繛鎺ユ槸鍚︽寔涔呯殑銆 鏌愪簺 DBMS (濡 sqlite) 鍙兘涓嶆敮鎸佽繖涓壒寰併
杩斿洖鏁版嵁搴撹繛鎺ユ槸鍚﹀彲鎵ц鏁版嵁棰勮幏鍙栥
缂撳瓨搴旂敤绋嬪簭缁勪欢鐨処D锛岀敤浜庢煡璇㈢紦瀛樸 榛樿涓'cache'锛屽畠鎸囩殑鏄富缂撳瓨搴旂敤绋嬪簭缁勪欢銆 璁剧疆杩欎釜灞炴т负false锛屽鏋滀綘鎯崇鐢ㄦ煡璇㈢紦瀛樸
涓嬫灏嗚缂撳瓨鐨凷QL璇彞鐨勬暟鐩 濡傛灉瀹冩槸 0锛屽嵆浣挎煡璇㈢紦瀛樿鍚敤锛屾煡璇篃涓嶄細琚紦瀛樸 娉ㄦ剰姣忔鎵ц涓鏉QL璇彞涔嬪悗 (鏄惁鍦―B鏈嶅姟鍣ㄤ笂鎵ц鎴栦粠鏌ヨ缂撳瓨涓幏鍙)锛 杩欎釜灞炴у皢琚噺灏1鑷0銆
褰撴煡璇㈢粨鏋滀繚瀛樺埌缂撳瓨鏃讹紝浣跨敤鐨勪緷璧栥
鏌ヨ缁撴灉琚繚鐣欏湪缂撳瓨涓湁鏁堢殑绉掓暟銆
浣跨敤0鎴栬礋鏁板兼寚绀轰笉缂撳瓨鏌ヨ缁撴灉 (榛樿 behavior).
涓轰簡鍚敤鏌ヨ缂撳瓨锛岃繖涓睘鎬у繀椤昏璁剧疆涓烘鏁般
骞朵笖 queryCacheID 蹇呴』鎸囧悜涓涓湁鏁堢殑缂撳瓨缁勪欢 ID銆
璇ユ柟娉cache() 鎻愪緵涓绉嶆柟渚跨殑鏂规硶璁剧疆姝ゅ睘鎬
鍜 queryCachingDependency銆
杩斿洖褰撳墠杩炴帴鐨勬暟鎹簱缁撴瀯
缂撳瓨搴旂敤绋嬪簭缁勪欢鐨処D锛岀敤浜庣紦瀛樿〃鐨勫厓鏁版嵁銆 榛樿涓'cache' 瀹冩寚鐨勬槸涓荤紦瀛樺簲鐢ㄧ▼搴忕粍浠躲 濡傛灉瑕佺鐢ㄧ紦瀛樿〃鐨勫厓鏁版嵁锛屾灞炴ц缃负false銆
鏁版嵁琛ㄤ腑鍏冩暟鎹湪缂撳瓨涓繚瀛樼殑绉掗挓鏁般 浣跨敤0鎴栬礋鍊兼寚绀轰笉缂撳瓨schema銆 濡傛灉澶т簬0鍜屾鏁帮紝cache琚惎鐢紝琛ㄧ殑鍏冩暟鎹皢琚紦瀛樸
鍏冩暟鎹笉琚紦瀛樼殑鍒楃殑鍒楄〃銆傞粯璁や负绌哄瓧绗︿覆銆
杩斿洖DBMS鏈嶅姟鍣ㄧ殑淇℃伅銆
杩斿洖DBMS鏈嶅姟鍣ㄧ殑鐗堟湰淇℃伅銆
杩斿洖SQL鎵ц鐨勭粺璁$粨鏋溿 杩斿洖鐨勭粨鏋滃寘鍚墽琛孲QL璇彞鐨勬暟鐩拰 鎵鑺辫垂鐨勬绘椂闂淬 涓轰簡浣跨敤姝ゆ柟娉曪紝enableProfiling蹇呴』璁剧疆涓 true銆
琛ㄥ悕绉扮殑榛樿鍓嶇紑銆傞粯璁や负 null锛屾剰鍛崇潃娌℃湁琛ㄥ墠缂銆 閫氳繃璁剧疆杩欎釜灞炴э紝浠讳綍鏍囪鍍 '{{tableName}}' 鍦 CDbCommand::text 灏 'prefixTableName'鏇挎崲锛 杩欓噷 'prefix' 鎸囩殑鏄繖涓睘鎬у笺
杩斿洖杩炴帴鐨勮秴鏃惰缃
寤虹珛鏁版嵁杩炴帴鐨勭敤鎴峰悕銆傞粯璁や负绌哄瓧绗︿覆銆
鏂规硶璇︾粏
public void __construct(string $dsn='', string $username='', string $password='')
| ||
$dsn | string | 鏁版嵁婧愬悕绉帮紝鎴 DSN锛屽寘鍚繛鎺ュ埌鏁版嵁搴撴墍闇鐨勪俊鎭 |
$username | string | DSN 瀛楃涓茬殑鐢ㄦ埛鍚嶃 |
$password | string | DSN 瀛楃涓茬殑瀵嗙爜銆 |
public function __construct($dsn='',$username='',$password='')
{
$this->connectionString=$dsn;
$this->username=$username;
$this->password=$password;
}
鏋勯犲嚱鏁般 娉ㄦ剰锛屽綋杩炴帴瀹炰緥鍒涘缓鐨勬椂鍊欙紝骞朵笉浼氳繛鎺ユ暟鎹簱銆 璁剧疆 active 灞炴т负true锛 鏉ュ缓绔嬫杩炴帴銆
public array __sleep()
| ||
{return} | array |
public function __sleep()
{
$this->close();
return array_keys(get_object_vars($this));
}
搴忓垪鍖栨椂鍏抽棴杩炴帴銆
public CDbTransaction beginTransaction()
| ||
{return} | CDbTransaction | 杩斿洖浜嬪姟鍚姩 |
public function beginTransaction()
{
Yii::trace('Starting transaction','system.db.CDbConnection');
$this->setActive(true);
$this->_pdo->beginTransaction();
return $this->_transaction=new CDbTransaction($this);
}
鍚姩浜嬪姟銆
public CDbConnection cache(integer $duration, CCacheDependency $dependency=NULL, integer $queryCount=1)
| ||
$duration | integer | 鏌ヨ缁撴灉淇濇寔鍦ㄧ紦瀛樹腑鏈夋晥鐨勭鏁般 濡傛灉瀹冩槸0锛岀紦瀛樺皢琚鐢ㄣ |
$dependency | CCacheDependency | 褰撴煡璇㈢粨鏋滀繚瀛樺埌缂撳瓨鏃讹紝浣跨敤鐨勪緷璧栥 |
$queryCount | integer | 鍦ㄨ皟鐢ㄦ鏂规硶鍚庯紝闇瑕佺紦瀛樼殑SQL鏌ヨ鐨勬暟鐩 榛樿涓 1锛屾剰鍛崇潃涓嬩竴鏉QL鏌ヨ灏嗚缂撳瓨銆 |
{return} | CDbConnection | 杩斿洖杩炴帴瀹炰緥鏈韩銆 |
public function cache($duration, $dependency=null, $queryCount=1)
{
$this->queryCachingDuration=$duration;
$this->queryCachingDependency=$dependency;
$this->queryCachingCount=$queryCount;
return $this;
}
璁剧疆鍏充簬鏌ヨ缂撳瓨鐨勫弬鏁般 姝ゆ柟娉曞彲鐢ㄤ簬鍚敤鎴栫鐢ㄦ煡璇㈢紦瀛樸 閫氳繃璁剧疆$duration鍙傛暟涓0锛屾煡璇㈢紦瀛樺皢琚鐢ㄣ 瑕佷笉鐒讹紝 鏂扮殑SQL璇彞鎵ц鐨勬煡璇㈢粨鏋滃皢琚繚瀛樺湪缂撳瓨涓紝 骞朵笖鍦ㄦ寚瀹氭椂闂存鍐呮湁鏁堛 濡傛灉鍚屾牱鐨勬煡璇㈠啀娆℃墽琛岋紝缁撴灉灏嗙洿鎺ヤ粠缂撳瓨涓鍙栵紝 鑰屼笉鏄墽琛屽疄闄呯殑SQL璇彞銆
protected void close()
|
protected function close()
{
Yii::trace('Closing DB connection','system.db.CDbConnection');
$this->_pdo=null;
$this->_active=false;
$this->_schema=null;
}
鍏抽棴褰撳墠杩炴帴鐨勬暟鎹簱杩炴帴銆 濡傛灉杩炴帴宸茬粡鍏抽棴锛屽畠涓嶆墽琛屼换浣曟搷浣溿
public CDbCommand createCommand(mixed $query=NULL)
| ||
$query | mixed | 瑕佹墽琛岀殑DB鏌ヨ銆傝繖鍙互鏄竴涓瓧绗︿覆锛岃〃绀轰竴涓猄QL璇彞锛 鎴栦竴涓暟缁勶紝瀹冭〃绀篠QL璇彞鐨勪笉鍚岀墖娈点傝鍙傞槄 CDbCommand::__construct 鏈夊叧鏇村璇︾粏淇℃伅鏈夊叧濡備綍灏嗘暟缁勪綔涓烘煡璇€傚鏋滆繖涓弬鏁版病鏈夌粰瀹氾紝 浣犲繀椤昏皟鐢ㄦ煡璇㈢敓鎴愬櫒鐨 CDbCommand 鏂规硶鍘诲缓绔嬫暟鎹簱鏌ヨ銆 |
{return} | CDbCommand | 鏁版嵁搴撳懡浠 |
public function createCommand($query=null)
{
$this->setActive(true);
return new CDbCommand($this,$query);
}
鍒涘缓鐢ㄤ簬鎵ц鐨勫懡浠ゃ
protected PDO createPdoInstance()
| ||
{return} | PDO | 杩斿洖pdo瀹炰緥 |
protected function createPdoInstance()
{
$pdoClass=$this->pdoClass;
if(($pos=strpos($this->connectionString,':'))!==false)
{
$driver=strtolower(substr($this->connectionString,0,$pos));
if($driver==='mssql' || $driver==='dblib' || $driver==='sqlsrv')
$pdoClass='CMssqlPdoAdapter';
}
return new $pdoClass($this->connectionString,$this->username,
$this->password,$this->_attributes);
}
鍒涘缓涓涓 PDO 瀹炰緥銆 pdo椹卞姩绋嬪簭涓己灏戞煇浜涘姛鑳芥椂锛 鎴戜滑鍙互浣跨敤涓涓傞厤鍣ㄧ被锛屼互鎻愪緵瀹冧滑銆
public boolean getActive()
| ||
{return} | boolean | 杩斿洖DB杩炴帴鏄惁宸茬粡寤虹珛 |
杩斿洖DB杩炴帴鏄惁宸茬粡寤虹珛銆
public mixed getAttribute(integer $name)
| ||
$name | integer | 瑕佹煡璇㈢殑灞炴с |
{return} | mixed | 鐩稿簲鐨勫睘鎬т俊鎭 |
public function getAttribute($name)
{
$this->setActive(true);
return $this->_pdo->getAttribute($name);
}
鑾峰彇鎸囧畾鐨勬暟鎹簱杩炴帴灞炴т俊鎭
public array getAttributes()
| ||
{return} | array | 杩斿洖鍏堝墠涓烘暟鎹簱杩炴帴鏄惧紡璁剧疆鐨勫睘鎬(name=>value)銆 |
public function getAttributes()
{
return $this->_attributes;
}
杩斿洖鍏堝墠涓烘暟鎹簱杩炴帴鏄惧紡璁剧疆鐨勫睘鎬с
鍙傝
public boolean getAutoCommit()
| ||
{return} | boolean | 杩斿洖鏄惁鍒涘缓鎴栨洿鏂癉B璁板綍灏嗚嚜鍔ㄦ彁浜ゃ |
public function getAutoCommit()
{
return $this->getAttribute(PDO::ATTR_AUTOCOMMIT);
}
杩斿洖鏄惁鍒涘缓鎴栨洿鏂版暟鎹簱璁板綍灏嗚嚜鍔ㄦ彁浜ゃ 鏌愪簺 DBMS (濡 sqlite) 鍙兘涓嶆敮鎸佽繖涓壒寰併
public static array getAvailableDrivers()
| ||
{return} | array | 杩斿洖涓涓彲鐢ㄧ殑PDO椹卞姩绋嬪簭鐨勫垪琛 |
public static function getAvailableDrivers()
{
return PDO::getAvailableDrivers();
}
杩斿洖涓涓彲鐢ㄧ殑PDO椹卞姩绋嬪簭鐨勫垪琛ㄣ
public string getClientVersion()
| ||
{return} | string | 杩斿洖鏁版嵁搴撻┍鍔ㄧ▼搴忕殑鐗堟湰淇℃伅 |
public function getClientVersion()
{
return $this->getAttribute(PDO::ATTR_CLIENT_VERSION);
}
杩斿洖鏁版嵁搴撻┍鍔ㄧ▼搴忕殑鐗堟湰淇℃伅銆
public mixed getColumnCase()
| ||
{return} | mixed | 鍒楃殑澶у皬鍐欐儏鍐 |
public function getColumnCase()
{
return $this->getAttribute(PDO::ATTR_CASE);
}
杩斿洖鍒楀悕绉扮殑澶у皬鍐欐儏鍐
public CDbCommandBuilder getCommandBuilder()
| ||
{return} | CDbCommandBuilder | 杩斿洖姝ゅ懡浠ょ敓鎴愬櫒 |
public function getCommandBuilder()
{
return $this->getSchema()->getCommandBuilder();
}
杩斿洖涓哄綋鍓岲B杩炴帴鐨凷QL鍛戒护鐢熸垚鍣ㄣ
public string getConnectionStatus()
| ||
{return} | string | 杩斿洖杩炴帴鐨勭姸鎬 |
public function getConnectionStatus()
{
return $this->getAttribute(PDO::ATTR_CONNECTION_STATUS);
}
杩斿洖杩炴帴鐨勭姸鎬併 涓浜 DBMS (濡 sqlite) 鍙兘涓嶆敮鎸佽繖涓壒寰併
public CDbTransaction getCurrentTransaction()
| ||
{return} | CDbTransaction | 杩斿洖褰撳墠娲诲姩鐨勪簨鍔°傚鏋滄病鏈夋椿鍔ㄤ簨鍔¤繑鍥瀗ull銆 |
public function getCurrentTransaction()
{
if($this->_transaction!==null)
{
if($this->_transaction->getActive())
return $this->_transaction;
}
return null;
}
杩斿洖褰撳墠娲诲姩鐨勪簨鍔°
public string getDriverName()
| ||
{return} | string | 杩斿洖鐨凞B椹卞姩绋嬪簭鐨勫悕绉 |
public function getDriverName()
{
if(($pos=strpos($this->connectionString, ':'))!==false)
return strtolower(substr($this->connectionString, 0, $pos));
// return $this->getAttribute(PDO::ATTR_DRIVER_NAME);
}
杩斿洖鐨勬暟鎹簱椹卞姩绋嬪簭鐨勫悕绉般
public string getLastInsertID(string $sequenceName='')
| ||
$sequenceName | string | 搴忓垪瀵硅薄鐨勫悕绉 (鏌愪簺DBMS瑕佹眰) |
{return} | string | 鏈鍚庢彃鍏ョ殑琛岀殑 ID锛屾垨浠庡簭鍒楀璞′腑鍙栧洖鐨勬渶鍚庣殑鍊笺 |
public function getLastInsertID($sequenceName='')
{
$this->setActive(true);
return $this->_pdo->lastInsertId($sequenceName);
}
杩斿洖鏈鍚庝竴涓彃鍏ョ殑琛岀殑ID鎴栧簭鍒楀笺
public mixed getNullConversion()
| ||
{return} | mixed | 杩斿洖鍊艰鏄巒ull鍜岀┖瀛楃涓叉槸鎬庢牱杞崲鐨勩 |
public function getNullConversion()
{
return $this->getAttribute(PDO::ATTR_ORACLE_NULLS);
}
杩斿洖null涓巈mpty瀛楃涓插浣曡浆鍖栫殑鎯呭喌銆
public PDO getPdoInstance()
| ||
{return} | PDO | 杩斿洖PDO瀹炰緥锛屽鏋滆繛鎺ヨ繕娌℃湁寤虹珛杩斿洖null |
public function getPdoInstance()
{
return $this->_pdo;
}
杩斿洖PDO瀹炰緥銆
public integer getPdoType(string $type)
| ||
$type | string | PHP绫诲瀷锛堥氳繃璋冪敤gettype()鑾峰緱锛夈 |
{return} | integer | 杩斿洖鐩稿簲鐨凱DO绫诲瀷 |
public function getPdoType($type)
{
static $map=array
(
'boolean'=>PDO::PARAM_BOOL,
'integer'=>PDO::PARAM_INT,
'string'=>PDO::PARAM_STR,
'NULL'=>PDO::PARAM_NULL,
);
return isset($map[$type]) ? $map[$type] : PDO::PARAM_STR;
}
鎸囧畾鐨凱HP鏁版嵁绫诲瀷鍐冲畾PDO鏁版嵁绫诲瀷銆
public boolean getPersistent()
| ||
{return} | boolean | 杩斿洖杩炴帴鏄惁鏄寔涔呰繛鎺 |
public function getPersistent()
{
return $this->getAttribute(PDO::ATTR_PERSISTENT);
}
杩斿洖鏁版嵁搴撹繛鎺ユ槸鍚︽寔涔呯殑銆 鏌愪簺 DBMS (濡 sqlite) 鍙兘涓嶆敮鎸佽繖涓壒寰併
public boolean getPrefetch()
| ||
{return} | boolean | 杩斿洖鏄惁杩炴帴鎵ц鏁版嵁棰勮鍙 |
public function getPrefetch()
{
return $this->getAttribute(PDO::ATTR_PREFETCH);
}
杩斿洖鏁版嵁搴撹繛鎺ユ槸鍚﹀彲鎵ц鏁版嵁棰勮幏鍙栥
public CDbSchema getSchema()
| ||
{return} | CDbSchema | 褰撳墠杩炴帴鐨勬暟鎹簱缁撴瀯 |
public function getSchema()
{
if($this->_schema!==null)
return $this->_schema;
else
{
$driver=$this->getDriverName();
if(isset($this->driverMap[$driver]))
return $this->_schema=Yii::createComponent($this->driverMap[$driver], $this);
else
throw new CDbException(Yii::t('yii','CDbConnection does not support reading schema for {driver} database.',
array('{driver}'=>$driver)));
}
}
杩斿洖褰撳墠杩炴帴鐨勬暟鎹簱缁撴瀯
public string getServerInfo()
| ||
{return} | string | 杩斿洖DBMS鏈嶅姟鍣ㄧ殑淇℃伅銆 |
public function getServerInfo()
{
return $this->getAttribute(PDO::ATTR_SERVER_INFO);
}
杩斿洖DBMS鏈嶅姟鍣ㄧ殑淇℃伅銆
public string getServerVersion()
| ||
{return} | string | 杩斿洖DBMS鏈嶅姟鍣ㄧ殑鐗堟湰淇℃伅銆 |
public function getServerVersion()
{
return $this->getAttribute(PDO::ATTR_SERVER_VERSION);
}
杩斿洖DBMS鏈嶅姟鍣ㄧ殑鐗堟湰淇℃伅銆
public array getStats()
| ||
{return} | array | 杩斿洖鐨勬暟缁勪腑绗竴涓厓绱犳寚绀篠QL璇彞鎵ц鐨勬暟鐩紝 绗簩涓厓绱犳寚绀篠QL鎵ц鐨勬绘椂闂淬 |
public function getStats()
{
$logger=Yii::getLogger();
$timings=$logger->getProfilingResults(null,'system.db.CDbCommand.query');
$count=count($timings);
$time=array_sum($timings);
$timings=$logger->getProfilingResults(null,'system.db.CDbCommand.execute');
$count+=count($timings);
$time+=array_sum($timings);
return array($count,$time);
}
杩斿洖SQL鎵ц鐨勭粺璁$粨鏋溿 杩斿洖鐨勭粨鏋滃寘鍚墽琛孲QL璇彞鐨勬暟鐩拰 鎵鑺辫垂鐨勬绘椂闂淬 涓轰簡浣跨敤姝ゆ柟娉曪紝enableProfiling蹇呴』璁剧疆涓 true銆
public integer getTimeout()
| ||
{return} | integer | 杩斿洖杩炴帴鐨勮秴鏃惰缃 |
public function getTimeout()
{
return $this->getAttribute(PDO::ATTR_TIMEOUT);
}
杩斿洖杩炴帴鐨勮秴鏃惰缃
public void init()
|
public function init()
{
parent::init();
if($this->autoConnect)
$this->setActive(true);
}
鍒濆鍖栫粍浠躲 璇ユ柟娉曞IApplicationComponent 鏉ヨ鏄繀椤荤殑锛 骞朵笖褰 CDbConnection 琚敤浣滀竴涓簲鐢ㄧ▼搴忕粍浠舵椂瑙﹀彂銆 濡傛灉浣犻噸鍐欐鏂规硶锛岃纭繚璋冪敤鐖剁被瀹炵幇 浠ヤ究鍙互灏嗙粍浠舵爣璁颁负宸插垵濮嬪寲銆
protected void initConnection(PDO $pdo)
| ||
$pdo | PDO | PDO瀹炰緥 |
protected function initConnection($pdo)
{
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if($this->emulatePrepare!==null && constant('PDO::ATTR_EMULATE_PREPARES'))
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,$this->emulatePrepare);
if($this->charset!==null)
{
$driver=strtolower($pdo->getAttribute(PDO::ATTR_DRIVER_NAME));
if(in_array($driver,array('pgsql','mysql','mysqli')))
$pdo->exec('SET NAMES '.$pdo->quote($this->charset));
}
if($this->initSQLs!==null)
{
foreach($this->initSQLs as $sql)
$pdo->exec($sql);
}
}
鍒濆鍖栧紑鏀炬暟鎹簱杩炴帴銆 鍦ㄦ暟鎹簱杩炴帴寤虹珛鍚庯紝璋冪敤姝ゆ柟娉曞銆 榛樿鐨勫疄鐜版槸璁剧疆MySQL鍜孭ostgreSQL鏁版嵁搴撹繛鎺ョ殑charset銆
protected void open()
|
protected function open()
{
if($this->_pdo===null)
{
if(empty($this->connectionString))
throw new CDbException(Yii::t('yii','CDbConnection.connectionString cannot be empty.'));
try
{
Yii::trace('Opening DB connection','system.db.CDbConnection');
$this->_pdo=$this->createPdoInstance();
$this->initConnection($this->_pdo);
$this->_active=true;
}
catch(PDOException $e)
{
if(YII_DEBUG)
{
throw new CDbException(Yii::t('yii','CDbConnection failed to open the DB connection: {error}',
array('{error}'=>$e->getMessage())),(int)$e->getCode(),$e->errorInfo);
}
else
{
Yii::log($e->getMessage(),CLogger::LEVEL_ERROR,'exception.CDbException');
throw new CDbException(Yii::t('yii','CDbConnection failed to open the DB connection.'),(int)$e->getCode(),$e->errorInfo);
}
}
}
}
鎵撳紑鏁版嵁搴撹繛鎺ワ紝濡傛灉瀹冨綋鍓嶆病鏈夋墦寮
public string quoteColumnName(string $name)
| ||
$name | string | 鍒楀悕 |
{return} | string | 姝g‘寮曠敤鐨勫垪鍚嶇О |
public function quoteColumnName($name)
{
return $this->getSchema()->quoteColumnName($name);
}
鍦ㄤ竴涓煡璇腑寮曠敤涓涓垪鍚嶇О銆 濡傛灉璇ュ垪鍚嶅寘鍚墠缂锛屽墠缂涔熻鎭板綋鐨勫紩鐢ㄣ
public string quoteTableName(string $name)
| ||
$name | string | 琛ㄥ悕 |
{return} | string | 姝g‘寮曠敤鐨勮〃鍚 |
public function quoteTableName($name)
{
return $this->getSchema()->quoteTableName($name);
}
鍦ㄤ竴涓煡璇腑寮曠敤鐨勮〃鍚嶃 濡傛灉姝よ〃鍚嶅寘鍚玸chema 鍓嶇紑锛屽墠缂涔熻兘琚伆褰撶殑寮曠敤銆
public string quoteValue(string $str)
| ||
$str | string | 琚紩鐢ㄧ殑瀛楃涓 |
{return} | string | 姝g‘寮曠敤鐨勫瓧绗︿覆 |
public function quoteValue($str)
{
if(is_int($str) || is_float($str))
return $str;
$this->setActive(true);
if(($value=$this->_pdo->quote($str))!==false)
return $value;
else // the driver doesn't support quote (e.g. oci)
return "'" . addcslashes(str_replace("'", "''", $str), "\000\n\r\\\032") . "'";
}
鍦ㄤ竴涓煡璇腑寮曠敤涓涓瓧绗︿覆鍊笺
public void setActive(boolean $value)
| ||
$value | boolean | 璇存槑鏁版嵁搴撹繛鎺ユ槸寮鍚繕鏄叧闂 |
public function setActive($value)
{
if($value!=$this->_active)
{
if($value)
$this->open();
else
$this->close();
}
}
鎵撳紑鎴栧叧闂璂B杩炴帴銆
public void setAttribute(integer $name, mixed $value)
| ||
$name | integer | 瑕佽缃殑灞炴 |
$value | mixed | 灞炴у |
public function setAttribute($name,$value)
{
if($this->_pdo instanceof PDO)
$this->_pdo->setAttribute($name,$value);
else
$this->_attributes[$name]=$value;
}
璁剧疆鏁版嵁搴撹繛鎺ヤ笂鐨勪竴涓睘鎬с
public void setAttributes(array $values)
| ||
$values | array | 瑕佽璁剧疆鐨勫睘鎬(name=>value)銆 |
public function setAttributes($values)
{
foreach($values as $name=>$value)
$this->_attributes[$name]=$value;
}
璁剧疆涓濂楁暟鎹簱杩炴帴鐨勫睘鎬с
鍙傝
public void setAutoCommit(boolean $value)
| ||
$value | boolean | 杩斿洖鏄惁鍒涘缓鎴栨洿鏂癉B璁板綍灏嗚嚜鍔ㄦ彁浜ゃ |
public function setAutoCommit($value)
{
$this->setAttribute(PDO::ATTR_AUTOCOMMIT,$value);
}
璁剧疆鏄惁鍒涘缓鎴栨洿鏂版暟鎹簱璁板綍灏嗚嚜鍔ㄦ彁浜ゃ 鏌愪簺 DBMS (濡 sqlite) 鍙兘涓嶆敮鎸佽繖涓壒寰併
public void setColumnCase(mixed $value)
| ||
$value | mixed | 鍒楀悕绉扮殑澶у皬鍐 |
public function setColumnCase($value)
{
$this->setAttribute(PDO::ATTR_CASE,$value);
}
璁剧疆鍒楀悕绉扮殑澶у皬鍐欍
public void setNullConversion(mixed $value)
| ||
$value | mixed | null鍜宔mpty 瀛楃涓插浣曡浆鎹€ |
public function setNullConversion($value)
{
$this->setAttribute(PDO::ATTR_ORACLE_NULLS,$value);
}
璁剧疆null鍜宔mpty 瀛楃涓插浣曡浆鎹€
public void setPersistent(boolean $value)
| ||
$value | boolean | 姝よ繛鎺ユ槸鍚︽槸鎸佷箙杩炴帴 |
public function setPersistent($value)
{
return $this->setAttribute(PDO::ATTR_PERSISTENT,$value);
}
璁剧疆姝よ繛鎺ユ槸鍚︽槸鎸佷箙杩炴帴銆 鏌愪簺 DBMS (濡 sqlite) 鍙兘涓嶆敮鎸佽繖涓壒寰併