首页后端开发PHPThinkphp中如何实现数据库切换,方法是什么

Thinkphp中如何实现数据库切换,方法是什么

时间2024-03-22 13:35:03发布访客分类PHP浏览810
导读:这篇文章给大家分享的是“Thinkphp中如何实现数据库切换,方法是什么”,文中的讲解内容简单清晰,对大家认识和了解都有一定的帮助,对此感兴趣的朋友,接下来就跟随小编一起了解一下“Thinkphp中如何实现数据库切换,方法是什么”吧。...
这篇文章给大家分享的是“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中如何实现数据库切换,方法是什么”的相关知识,感谢各位的阅读,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注网络,小编每天都会为大家更新不同的知识。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Thinkphp中如何实现数据库切换,方法是什么
本文地址: https://pptw.com/jishu/650568.html
Python输入错误的删除操作如何实现,方法是什么 Yii中应用组件相关知识有哪些,用法是什么

游客 回复需填写必要信息