• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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 框架配置操作之动态配置、扩展配置及批量配置实例分析
    • Thinkphp 框架配置操作之配置加载与读取配置实例分析
    • Thinkphp 框架基础之入口文件功能、定义与用法分析
    • Thinkphp 框架基础之源码获取、环境要求与目录结构分析
    • Thinkphp 框架扩展之驱动扩展实例分析
    • Thinkphp 框架扩展之应用模式实现方法分析
    • Thinkphp 框架扩展之Widget扩展实现方法分析
    • Thinkphp 框架扩展之行为扩展原理与实现方法分析
    • Thinkphp 框架扩展之标签库驱动原理与用法分析
    • 浅谈PHP之ThinkPHP框架使用详解
    上一篇:PHP接口类(interface)的定义、特点和应用示例
    下一篇:Yii 框架使用Forms操作详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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