前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >thinkphp 框架数据库切换实现方法分析

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

作者头像
砸漏
发布2020-11-02 11:42:17
1K0
发布2020-11-02 11:42:17
举报
文章被收录于专栏:恩蓝脚本

本文实例讲述了thinkphp 框架数据库切换实现方法。分享给大家供大家参考,具体如下:

数据库配置:

代码语言:javascript
复制
 //数据库配置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';
代码语言:javascript
复制
//默认数据库读取数据
$test = Db::name("test")- select();
//第二个数据库读取数据
$test1=Db::connect("DB_Config_1")- name("test")- select();

application/config.php

代码语言:javascript
复制
$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类的时候动态定义连接信息,例如:

代码语言:javascript
复制
Db::connect([
  // 数据库类型
  'type'    =  'mysql',
  // 数据库连接DSN配置
  'dsn'     =  '',
  // 服务器地址
  'hostname'  =  '127.0.0.1',
  // 数据库名
  'database'  =  'thinkphp',
  // 数据库用户名
  'username'  =  'root',
  // 数据库密码
  'password'  =  '',
  // 数据库连接端口
  'hostport'  =  '',
  // 数据库连接参数
  'params'   =  [],
  // 数据库编码默认采用utf8
  'charset'   =  'utf8',
  // 数据库表前缀
  'prefix'   =  'think_',
]);

或者使用字符串方式:

代码语言:javascript
复制
Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8');

字符串连接的定义格式为:

数据库类型://用户名:密码@数据库地址:数据库端口/数据库名#字符集

注意:字符串方式可能无法定义某些参数,例如前缀和连接参数。

如果我们已经在应用配置文件(注意这里不是数据库配置文件)中配置了额外的数据库连接信息,例如:

代码语言:javascript
复制
 //数据库配置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';

我们可以改成

代码语言:javascript
复制
Db::connect('db_config1');
Db::connect('db_config2');

database.php是框架默认的数据库配置,里面写数据库1的信息,新建了个database2.php是放置数据库2的信息。

创建完数据库2之后,在config配置文件里,文件最后引入数据库2的配置信息

代码语言:javascript
复制
$db_con2 = require_once ('database2.php'),
'db_con2' =  $db_con2,

代码中引用:

选择数据库1的时候,我是用模型查询的直接写SQL语句:

代码语言:javascript
复制
//模型查询
$user = new User();
$result = $user- where('username', $data['username'])
        - where('password', $data['password'])
        - find();

或者

代码语言:javascript
复制
User::where('id','1')- find();
//普通结构查询
Db::table('think_user')- where('id',1)- find();

查询数据库2的信息时,调用普通查询语句:

代码语言:javascript
复制
$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();

或者

代码语言:javascript
复制
$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程序设计有所帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据库配置:
  • 方法配置
  • 代码中引用:
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档