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执行速度全攻略(上)
Oct 09 PHP
php仿discuz分页效果代码
Oct 02 PHP
php 什么是PEAR?(第三篇)
Mar 19 PHP
php 传值赋值与引用赋值的区别
Dec 29 PHP
php ajax 静态分页过程形式
Sep 02 PHP
php使HTML标签自动补全闭合函数代码
Oct 04 PHP
php带抄送和密件抄送的邮件发送方法
Mar 20 PHP
smarty模板引擎之分配数据类型
Mar 30 PHP
php生成zip文件类实例
Apr 07 PHP
WordPress中限制非管理员用户在文章后只能评论一次
Dec 31 PHP
PHP统计目录中文件以及目录中目录大小的方法
Jan 09 PHP
php查询及多条件查询
Feb 26 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循环遍历数组的3种方法list()、each()和while总结
2014/11/19 PHP
php生成静态页面并实现预览功能
2019/06/27 PHP
Git命令之分支详解
2021/03/02 PHP
JS 判断代码全收集
2009/04/28 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
实例讲解JQuery中this和$(this)区别
2014/12/08 Javascript
15款jQuery分布引导插件分享
2015/02/04 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
2016/08/24 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
2016/11/30 Javascript
基于JS脚本语言的基础语法详解
2017/07/22 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
简单介绍Python中的round()方法
2015/05/15 Python
Python3生成手写体数字方法
2018/01/30 Python
python-opencv 将连续图片写成视频格式的方法
2019/01/08 Python
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
详解Python_shutil模块
2019/03/15 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
Python requests获取网页常用方法解析
2020/02/20 Python
Django CBV模型源码运行流程详解
2020/08/17 Python
详解window.open被浏览器拦截的解决方案
2019/07/18 HTML / CSS
印度网上药店:1mg
2017/10/13 全球购物
写出一个方法实现冒泡排序
2016/07/08 面试题
乡镇庆八一活动方案
2014/02/02 职场文书
《苏珊的帽子》教学反思
2014/04/07 职场文书
食品安全承诺书范文
2014/08/29 职场文书
学校2014年度工作总结
2014/12/06 职场文书
关于感谢信的范文
2015/01/23 职场文书
我们的节日中秋节活动总结
2015/03/23 职场文书
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python