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 相关文章推荐
PHP 截取字符串 分别适合GB2312和UTF8编码情况
Feb 12 PHP
PHP SQLite类
May 07 PHP
基于MySQL体系结构的分析
May 02 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
May 29 PHP
php 购物车完整实现代码
Jun 05 PHP
深入分析PHP引用(&)
Sep 04 PHP
php针对cookie操作的队列操作类实例
Dec 10 PHP
在Debian系统下配置LNMP的教程
Jul 09 PHP
Yii2 rbac权限控制之rule教程详解
Jun 23 PHP
Yii2语言国际化自动配置详解
Aug 22 PHP
PHP实现字符串的全排列详解
Apr 24 PHP
Laravel框架源码解析之入口文件原理分析
May 14 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
玛琪朵 Macchiato
2021/03/03 咖啡文化
使用PHP+MySql实现微信投票功能实例代码
2017/09/29 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
js png图片(有含有透明)在IE6中为什么不透明了
2010/02/07 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
2014/11/08 Javascript
JS跨域问题详解
2014/11/25 Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
2015/06/16 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
2015/11/25 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
在vue项目中,将juery设置为全局变量的方法
2018/09/25 Javascript
JQuery的加载和选择器用法简单示例
2019/05/13 jQuery
基于Vue实现微前端的示例代码
2020/04/24 Javascript
vue路由跳转传递参数的方式总结
2020/05/10 Javascript
JavaScript中reduce()的5个基本用法示例
2020/07/19 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
three.js如何实现3D动态文字效果
2021/03/03 Javascript
python根据路径导入模块的方法
2014/09/30 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
详解python持久化文件读写
2019/04/06 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
解决TensorFlow GPU版出现OOM错误的问题
2020/02/03 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
2020/02/17 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
2020/10/23 Python
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
在校实习生求职信
2014/06/18 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
社区服务理念口号
2015/12/25 职场文书
python实现简易名片管理系统
2021/04/11 Python