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传输数据的代码
Nov 13 PHP
php定时计划任务的实现方法详解
Jun 06 PHP
php操作XML、读取数据和写入数据的实现代码
Aug 15 PHP
php中substr()函数参数说明及用法实例
Nov 15 PHP
详解PHP中的Traits
Jul 29 PHP
windows下apache搭建php开发环境
Aug 27 PHP
浅谈PHP Cookie处理函数
Jun 10 PHP
PHP GD库相关图像生成和处理函数小结
Sep 30 PHP
php双层循环(九九乘法表)
Oct 23 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
Sep 16 PHP
实例讲解PHP表单验证功能
Feb 15 PHP
open_basedir restriction in effect. 原因与解决方法
Mar 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
PHP获取文件行数的方法
2015/06/10 PHP
PHP中set error handler函数用法小结
2015/11/11 PHP
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
javascript 全选与全取消功能的实现代码
2012/12/23 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
2013/09/06 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
Nodejs中自定义事件实例
2014/06/20 NodeJs
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
2020/11/24 Javascript
js+html5实现复制文字按钮
2017/07/15 Javascript
基于vue中css预加载使用sass的配置方式详解
2018/03/13 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
2019/08/29 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
Python数据结构之单链表详解
2017/09/12 Python
matplotlib subplots 调整子图间矩的实例
2018/05/25 Python
对Python之gzip文件读写的方法详解
2019/02/08 Python
利用pyecharts实现地图可视化的例子
2019/08/12 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
2020/06/04 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
HTTP状态码详解
2021/03/18 杂记
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
仓库门卫岗位职责
2013/12/22 职场文书
营销人才自我鉴定范文
2013/12/25 职场文书
企业新年寄语
2014/04/04 职场文书
中介业务员岗位职责
2014/04/09 职场文书
电子工程求职信
2014/07/17 职场文书
用python开发一款操作MySQL的小工具
2021/05/12 Python
centos7安装mysql5.7经验记录
2022/05/02 Servers
MySQL数据库 任意ip连接方法
2022/05/20 MySQL