當前位置:首頁 » 數據倉庫 » thinkphp兩個資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

thinkphp兩個資料庫

發布時間: 2022-09-28 01:41:50

❶ thinkphp如何連接多個資料庫

不知道你說的是分布式資料庫還是切換式資料庫
如果是分布式數據話的話可以參考官方手冊:http://document.thinkphp.cn/manual_3_2.html#connect_db
如果僅僅是資料庫切換的話,可以參考官方手冊:http://document.thinkphp.cn/manual_3_2.html#switch_database

❷ php手把手教你做網站(二十九)thinkphp6部署多個資料庫

前邊介紹了負載均衡,mysql同步,接下來介紹tp6分布式部署多個資料庫,實現讀寫分離。

tp6的分布式部署讀和寫仍然是一個系統,這里我們分開操作,給用戶展示的就是從資料庫,後端添加文章就是主庫,然後同步到從庫。

1、配置資料庫鏈接參數

目標:實現隨機使用資料庫展示信息,只是讀操作。

測試:前台可以讀取表中內容(存放的不一致),查看是否是隨機顯示的。

打開.env文件進行編輯

說明:

2、編輯database.php

找到deploy設置為1分布式部署,下邊不要改,都是讀,寫入的也就是後端的我們單獨建站連接主庫。

配置完成,tp6使用的是mt_rand取隨機數判斷使用哪個資料庫。

3、資料庫交互寫操作

比如瀏覽量沒必要每次都去更新資料庫,可以先使用redis緩存,存夠1000的整數倍,再去更新資料庫。

4、後台獨立,也就是寫

可以前後端分離,單獨做一個網站(沒有前端)使用ip訪問或者獨立的域名連接後台。

5、上傳附件(jquery ajax跨域上傳)

使用了nginx負載均衡,肯定是多個一樣的網站,如果圖片存放到一個站,別的就不能訪問了,可以單獨設置一個附件(壓縮包,圖片等)伺服器,可以使用二級域名連接,這就要求我們上傳附件的時候,是上傳到附件伺服器。

jqueryURL

API控制器apdpic方法

說明:

也可以先傳到後台伺服器然後使用(php)ftp上傳,或者是通過curl上傳到附件伺服器,感覺那樣畢竟麻煩,直接設置跨域會比較簡單。

也測試了使用jsonp跨域,但是不能上傳附件。

6、thinkphp6實現讀寫分離(在一個站點)

我個人是不喜歡這樣的,負載均衡應該是均衡地讀,也就是前台單獨一個站點,後端的寫是另一個獨立的站點,看個人喜好吧。

獨立後台的優點:可以提升安全性,因為我們的後台網址是不公開的,避免用戶猜測一些後台的信息。

.env配置按照1所述編輯,默認第一個是主庫。

database.php

願大家在新的一年心想事成,萬事如意!!!

❸ thinkphp5 怎麼同時連接mysql和sqlserver 2種資料庫

到微軟官網下載文件,網址:網路搜索選擇「SQLSRV20.EXE」,點擊"next"(下一步),進行下載右鍵解壓到當前目錄,把這兩個文件拷貝到PHP目錄下的ext目錄下下圖是拷貝後的結果,請參考,不要拷錯了。打開php-ini在文件中設置,加上下面兩行代碼,如下圖下面這里設置為On,保存,重啟服務,如下圖修改thinkphp配置文件,如下圖thinkphp控制器文件,隨便查個sqlserver表中的數據,看是否能成功列印,如果成功列印,那麼證明資料庫連接成功。如果不能正確列印,那麼看報錯提示,在按照提示解決問題。

❹ thinkphp如何連接多個資料庫

1、onfig.php文件
'LOAD_EXT_CONFIG'
=>'db,db_config',
//
載入擴展
配置文件
。多個文件用逗號分隔
//其中db.php中放置的是mysql的配置
//db_config放置的是
sqlserver
的配置
2、其中db.php內容如下
return
array(
'DB_TYPE'=>'mysql',
'DB_HOST'=>'
localhost
',
'DB_NAME'=>'your_mysql_dbname',
'DB_USER'=>'your_mysql_user_name',
'DB_PWD'=>'123456',
'DB_PORT'=>'3306',
'DB_PREFIX'=>'',
);
db_config.php內容如下
return
array(
'DB_CONFIG1'
=>
array(
'db_type'
=>
'pdo',
'db_user'
=>
'XX',
'db_pwd'
=>
'XXXXXXXX',
'DB_DSN'
=>
'sqlsrv:Server=XXXXXX;Database=XXXX',
),
);
3、在Lib/Model下新建一個專門的模型
class
SqlsrvModel
extends
Model
{
protected

$
connection

=
'DB_CONFIG1';
}
4、可以在Action
中調
各個模型了

❺ thinkphp3.1.3 怎麼連接倆個資料庫,一個mysql ,一個orcl....求教

//默認資料庫鏈接
'DB_TYPE'=>'資料庫類型',
'DB_HOST'=>'資料庫地址',
'DB_NAME'=>'資料庫名',
'DB_USER'=>'登錄帳號',
'DB_PWD'=>'登錄密碼',
'DB_PORT'=>'埠號',
'DB_PREFIX'=>'表前綴',
//資料庫配置1'
DB_CONFIG1'=array(
'db_type'=>'類型',
'db_user'=>'帳號',
'db_pwd'=>'密碼',
'db_host'=>'地址',
'db_port'=>'埠',
'db_name'=>'資料庫名'
),
//資料庫配置2'
DB_CONFIG2'=array(
'db_type'=>'類型',
'db_user'=>'帳號',
'db_pwd'=>'密碼',
'db_host'=>'地址',
'db_port'=>'埠',
'db_name'=>'資料庫名'
),
//切換操作
$this->db(0,"DB_CONFIG1")->query("SQL");//默認資料庫配置
$this->db(1,"DB_CONFIG1")->query("SQL");//第一個配置
$this->db(2,"DB_CONFIG2")->query("SQL");//第二個配置

還有幾個採納升級謝謝

❻ 怎麼樣配置thinkphp 與本地mysql和sql server同時連接倆個資料庫

thinkphp 同時連接兩個資料庫的配置方法如下:
1、在Db.class.php腳本文件裡面的類增加一個魔術方法__get(),寫法如下:
public function __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

❼ 怎麼樣配置thinkphp 與本地mysql和sql server同時連接倆個資料庫

$conntect1=array(
'DB_USER'=>XXXXX,
'DB_PWD'=>XXXXX,
.....
//這個寫MYSQL的連接配置
);

$conntect2=array(
'DB_USER'=>XXXXX,
'DB_PWD'=>XXXXX,
.....
//這個寫MSSQL的配置
);

然後定義模型
$model=D('xxx');
$model->addConnect($connect1,1);
$model->addConnect($connect2,2);

這樣就可以成功連接MYSQL,MSSQL了。
在使用的時候。
$model->switchConnect(2);//切換到MSSQL。

❽ thinkphp d方法怎麼用在不同的資料庫

D方法是實例化數據模型,不能切換資料庫
如果你兩個資料庫的數據結構是一樣的,你可以在實例化之前切換資料庫,再通過D方法實例化數據模型
用$this->db("資料庫編號","資料庫配置");切換資料庫
http://document.thinkphp.cn/manual_3_2.html#switch_database

❾ 怎麼樣配置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