本文實例講述了thinkphp 框架數據庫切換實現方法。分享給大家供大家參考,具體如下:
數據庫配置:
//數據庫配置1
'db_config1' => [
// 數據庫類型
'type' => 'mysql',
// 服務器地址
'hostname' => '127.0.0.1',
// 數據庫名
'database' => 'thinkphp',
// 數據庫用戶名
'username' => 'root',
// 數據庫密碼
'password' => '',
// 數據庫編碼默認采用utf8
'charset' => 'utf8',
// 數據庫表前綴
'prefix' => 'think_',
],
//數據庫配置2
'db_config2' => 'mysql://root:1234@localhost:3306/thinkphp#utf8';
//默認數據庫讀取數據
$test = Db::name("test")->select();
//第二個數據庫讀取數據
$test1=Db::connect("DB_Config_1")->name("test")->select();
application/config.php
$db1 = [
'type'=>'mysql',
'hostname'=>'127.0.0.1',
'database'=>'testA',
'username'=>'root',
'password'=>'123456',
'hostport'=>'3306',
'params'=>[],
'charset'=>'utf8',
'prefix'=>'', ],
$db2 = [
'type'=>'mysql',
'hostname'=>'127.0.0.1',
atabase'=>'testB',
'username'=>'root',
'password'=>'123456',
'hostport'=>'3306',
'params'=>[],
'charset'=>'utf8',
'prefix'=>'', ],
Db::connect('db1')->query('select * from user where age=25');
方法配置
我們可以在調用Db類的時候動態定義連接信息,例如:
Db::connect([
// 數據庫類型
'type' => 'mysql',
// 數據庫連接DSN配置
'dsn' => '',
// 服務器地址
'hostname' => '127.0.0.1',
// 數據庫名
'database' => 'thinkphp',
// 數據庫用戶名
'username' => 'root',
// 數據庫密碼
'password' => '',
// 數據庫連接端口
'hostport' => '',
// 數據庫連接參數
'params' => [],
// 數據庫編碼默認采用utf8
'charset' => 'utf8',
// 數據庫表前綴
'prefix' => 'think_',
]);
或者使用字符串方式:
Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8');
字符串連接的定義格式為:
數據庫類型://用戶名:密碼@數據庫地址:數據庫端口/數據庫名#字符集
注意:字符串方式可能無法定義某些參數,例如前綴和連接參數。
如果我們已經在應用配置文件(注意這里不是數據庫配置文件)中配置了額外的數據庫連接信息,例如:
//數據庫配置1
'db_config1' => [
// 數據庫類型
'type' => 'mysql',
// 服務器地址
'hostname' => '127.0.0.1',
// 數據庫名
'database' => 'thinkphp',
// 數據庫用戶名
'username' => 'root',
// 數據庫密碼
'password' => '',
// 數據庫編碼默認采用utf8
'charset' => 'utf8',
// 數據庫表前綴
'prefix' => 'think_',
],
//數據庫配置2
'db_config2' => 'mysql://root:1234@localhost:3306/thinkphp#utf8';
我們可以改成
Db::connect('db_config1');
Db::connect('db_config2');

database.php是框架默認的數據庫配置,里面寫數據庫1的信息,新建了個database2.php是放置數據庫2的信息。
創建完數據庫2之后,在config配置文件里,文件最后引入數據庫2的配置信息
$db_con2 = require_once ('database2.php'),
'db_con2' => $db_con2,
代碼中引用:
選擇數據庫1的時候,我是用模型查詢的直接寫SQL語句:
//模型查詢
$user = new User();
$result = $user->where('username', $data['username'])
->where('password', $data['password'])
->find();
或者
User::where('id','1')->find();
//普通結構查詢
Db::table('think_user')->where('id',1)->find();
查詢數據庫2的信息時,調用普通查詢語句:
$list = Db::connect('db_con2')
->table('nrf_amf_reg_info')
->alias('r')
->join('nrf_amf_server s','r.Id = s.nrf_amf_reg_Id','LEFT')
->paginate();
或者
$list = Db::connect('db_con2')->name('nrf_disc_record')->paginate();
注:nrf_amf_reg_info和nrf_disc_record為表名
更多關于thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結》、《ThinkPHP常用方法總結》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術總結》。
希望本文所述對大家基于ThinkPHP框架的PHP程序設計有所幫助。
您可能感興趣的文章:- Thinkphp 框架配置操作之動態配置、擴展配置及批量配置實例分析
- Thinkphp 框架配置操作之配置加載與讀取配置實例分析
- Thinkphp 框架基礎之入口文件功能、定義與用法分析
- Thinkphp 框架基礎之源碼獲取、環境要求與目錄結構分析
- Thinkphp 框架擴展之驅動擴展實例分析
- Thinkphp 框架擴展之應用模式實現方法分析
- Thinkphp 框架擴展之Widget擴展實現方法分析
- Thinkphp 框架擴展之行為擴展原理與實現方法分析
- Thinkphp 框架擴展之標簽庫驅動原理與用法分析
- 淺談PHP之ThinkPHP框架使用詳解