您现在的位置是:群英 > 开发技术 > PHP语言
Thinkphp中如何实现数据库切换,方法是什么
Admin发表于 2022-09-05 17:40:08748 次浏览
这篇文章给大家分享的是“Thinkphp中如何实现数据库切换,方法是什么”,文中的讲解内容简单清晰,对大家认识和了解都有一定的帮助,对此感兴趣的朋友,接下来就跟随小编一起了解一下“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中如何实现数据库切换,方法是什么”的相关知识,感谢各位的阅读,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注群英网络,小编每天都会为大家更新不同的知识。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

相关信息推荐
2022-09-20 18:13:29 
摘要:这篇文章主要为大家详细介绍了PHP设计模式的策略,适配器和观察者模式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
2022-05-11 17:05:28 
摘要:本篇文章给大家带来了关于java的相关知识,其中主要总结介绍了创建多线程的五种方法,包括了继承Thread类、实现Runnable接口、实现Callable接口、继承TimerTask类和通过线程池启动多线程,希望对大家有帮助。
2022-05-18 16:03:23 
摘要:本文由golang教程栏目给大家总结介绍Golang的一些命名规范,希望对需要的朋友有所帮助!
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部