thinkphp 框架数据库切换实现方法分析

本文实例讲述了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 框架数据库切换实现方法分析 的全部内容, 来源链接: utcz.com/p/224362.html

回到顶部