thinkphp 框架数据库切换实现方法分析
发布:smiling 来源: PHP粉丝网 添加日期:2022-03-07 17:23:31 浏览: 评论:0
本文实例讲述了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为表名
Tags: thinkphp数据库切换
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)