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生成静态页面分析 模板+缓存+写文件
Aug 17 PHP
php 代码优化的42条建议 推荐
Sep 25 PHP
php中几种常见安全设置详解
Apr 06 PHP
PHP中文URL编解码(urlencode()rawurlencode()
Jul 03 PHP
PHP URL参数获取方式的四种例子
Feb 28 PHP
CI框架中集成CKEditor编辑器的教程
Jun 09 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
Jun 19 PHP
php使用pdo连接mssql server数据库实例
Dec 25 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
Mar 16 PHP
Yii快速入门经典教程
Dec 28 PHP
php实现生成验证码实例分享
Apr 10 PHP
PHP 枚举类型的管理与设计知识点总结
Feb 13 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 巧用数组降低程序的时间复杂度
2010/01/01 PHP
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
php实现异步数据调用的方法
2015/12/24 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
PHP大文件切割上传并带进度条功能示例
2019/07/01 PHP
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
js 金额文本框实现代码
2012/02/14 Javascript
JS定时刷新页面及跳转页面的方法
2013/07/04 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
js的hasownproperty使用示例
2014/03/02 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
jQuery Ajax请求后台数据并在前台接收
2016/12/10 Javascript
jquery对象与DOM对象转化
2017/02/08 Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
2017/04/14 jQuery
three.js加载obj模型的实例代码
2017/11/10 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
[01:46]DOTA2上海特锦赛小组赛英文解说KotlGuy采访
2016/02/27 DOTA
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
美国在线购物频道:Shop LC
2019/04/21 全球购物
Linux上比较文件的命令都有哪些
2012/02/24 面试题
施工安全协议书
2013/12/11 职场文书
竞选学习委员演讲稿
2014/04/28 职场文书
党员干部批评与自我批评反四风思想汇报
2014/09/21 职场文书
群众路线个人剖析材料及整改措施
2014/11/04 职场文书
教师先进个人材料
2014/12/17 职场文书
九寨沟导游词
2015/02/02 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS
Python基础之Socket通信原理
2021/04/22 Python
python如何将mat文件转为png
2022/07/15 Python