A. 怎麼樣配置thinkphp 與本地mysql和sql server同時連接倆個資料庫
thinkphp 同時連接兩個資料庫的配置方法如下:
1、在Db.class.php腳本文件裡面的類增加一個魔術方法__get(),寫法如下:
publicfunction__get($propertyName)
{return$this->$propertyName;
}
這個方法是用來訪問類中protected $config成員屬性用的。有的人可能會說,直接把protected改成public豈不是更好。這樣只解決了基類的問題,假如,子類也同樣進行了受保護,那要你更改更多的文件,這是我們做IT程序員非常不願意看到的事情。
2、在Model.class.php中的getTableName()方法更改如下:
$tablepre=$this->db->config['tablepre'];
if(empty($this->trueTableName)){
$tableName??=empty($tablepre)?$this->tablePrefix:$tablepre;
if(!empty($this->tableName)){
$tableName.=$this->tableName;
}
else
{
$tableName.=parse_name($this->name);
}
$this->trueTableName??=??strtolower($tableName);
}
return(!empty($this->dbName)?$this->dbName.'.':'').$this->
trueTableName;這樣就完成了多庫自由切換時,導致的表前綴問題。
/*******************面向對象PDO連接方式*********************/
'DB_TYPE'=>'PDO',//資料庫類型
'DB_DSN'=>'mysql:host=localhost;dbname=master',//DSN連接。
'DB_USER'=>'root',//資料庫用戶名
'DB_PWD'=>'123456',//資料庫密碼
'DB_PORT'=>'3306',//資料庫埠
'DB_PREFIX'=>'g_',//數據表前綴
'DB_CHARSET'=>'utf8',//資料庫編碼默認採用utf8