thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例


Posted in PHP onMay 29, 2019

本文实例讲述了thinkPHP5框架实现多数据库连接,跨数据连接查询操作。分享给大家供大家参考,具体如下:

1. 多数据库连接

方法1:在需要连接其他数据库的地方,使用Db::connect()方法动态连接数据库,方法参数为数据库配置的数组或字符串例如:

字符串参数:

Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8');

配置数组参数:

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

详细用法参考thinkphp5完全开发手册:https://www.kancloud.cn/manual/thinkphp5/118059

方法2:在应用配置文件里面添加多个数据库配置,例如:

'database1' => []//数据库配置数组 
'database2' => []//数据库配置数组

在需要连接时,使用Db::connect("database1")连接指定数据库,执行数据库操作时直接在连接后链式写函数,例如:

$db = Db::connect("database1");
$db->name("table")->select();

2. 跨数据库连接查询

方法1:利用Db::query("sql")方法执行sql语句,在sql语句中使用database.table的方式指明数据库及表,例如:

连接查询数据库database1中表table1与数据库database2中表table2中id相等的数据

select * from database1.table1 as t1 inner join database2.table2 as t2 where t1,id=t2.id

方法2:利用循环分别查询不同数据库

现在database1中查询数据,遍历查询结果集,分别查询database2中的满足条件的数据进行拼接

ps:描述有不到位的敬请提出问题

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
计数器详细设计
Oct 09 PHP
用文本文件制作留言板提示(上)
Oct 09 PHP
在数据量大(超过10万)的情况下
Jan 15 PHP
mysql5的sql文件导入到mysql4的方法
Oct 19 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
Nov 07 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
Nov 07 PHP
PHP读取xml方法介绍
Jan 12 PHP
浅析PHP的ASCII码转换类
Jul 05 PHP
Symfony的安装和配置方法
Mar 17 PHP
Laravel 5.3 学习笔记之 安装
Aug 28 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
Nov 23 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
Mar 12 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
May 29 #PHP
php fread函数使用方法总结
May 28 #PHP
PHP常用正则表达式精选(推荐)
May 28 #PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
May 28 #PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
May 28 #PHP
详解PHP PDO简单教程
May 28 #PHP
laravel实现简单用户权限的示例代码
May 28 #PHP
You might like
php 地区分类排序算法
2013/07/01 PHP
PHP读取mssql json数据中文乱码的解决办法
2016/04/11 PHP
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
判断访客终端类型集锦
2015/06/05 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
2018/04/01 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
Vue使用NProgress进度条的方法
2019/09/21 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
VUE中V-IF条件判断改变元素的样式操作
2020/08/09 Javascript
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
python创建和删除目录的方法
2015/04/29 Python
深入理解Python中的*重复运算符
2017/10/28 Python
python输入错误密码用户锁定实现方法
2017/11/27 Python
python实现websocket的客户端压力测试
2019/06/25 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
2019/12/27 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
应聘教师推荐信
2013/10/31 职场文书
致跳远、跳高运动员广播稿
2014/01/09 职场文书
门前三包责任书
2014/04/15 职场文书
双方协议书
2014/04/22 职场文书
C++程序员求职信
2014/05/07 职场文书
运动会演讲稿200字
2014/08/25 职场文书
村党支部群众路线教育实践活动对照检查材料
2014/09/26 职场文书
2015年教师自我评价范文
2015/03/04 职场文书
2015年乡镇统计工作总结
2015/04/22 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
图文详解Nginx版本平滑升级方案
2021/09/15 Servers