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实现的MySQL数据浏览器
Mar 11 PHP
如何在PHP程序中防止盗链
Apr 09 PHP
PHP垃圾回收机制简单说明
Jul 22 PHP
php采集时被封ip的解决方法
Aug 29 PHP
PHP计划任务、定时执行任务的实现代码
Apr 23 PHP
关于php mvc开发模式的感想
Jun 28 PHP
使用php实现快钱支付功能(涉及到接口)
Jul 01 PHP
php堆排序(heapsort)练习
Nov 13 PHP
ThinkPHP3.1.3版本新特性概述
Jun 19 PHP
php使用Jpgraph绘制柱形图的方法
Jun 10 PHP
Laravel框架实现利用中间件进行操作日志记录功能
Jun 06 PHP
php引用传递
Apr 01 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中$this和$that指针使用实例
2015/01/06 PHP
CentOS安装php v8js教程
2015/02/26 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
Laravel框架创建路由的方法详解
2019/09/04 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
图片按比例缩放函数
2006/06/26 Javascript
指定位置如果有图片显示图片,无图片显示广告的JS
2010/06/05 Javascript
js中将HTMLCollection/NodeList/伪数组转换成数组的代码
2011/07/31 Javascript
什么是DOM(Document Object Model)文档对象模型
2012/03/05 Javascript
jquery 插件学习(四)
2012/08/06 Javascript
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
Nodejs实现多人同时在线移动鼠标的小游戏分享
2014/12/06 NodeJs
浅谈javascript的call()、apply()、bind()的用法
2016/02/21 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
2016/08/01 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python中的字符串操作和编码Unicode详解
2017/01/18 Python
python如何把嵌套列表转变成普通列表
2018/03/20 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
pycharm在调试python时执行其他语句的方法
2018/11/29 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
python dlib人脸识别代码实例
2019/04/04 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
在django中,关于session的通用设置方法
2019/08/06 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
2019/12/26 Python
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
编写strcpy函数
2014/06/24 面试题
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
小学毕业典礼演讲稿
2014/09/09 职场文书
员工开除通知书
2015/04/25 职场文书
带你学习MySQL执行计划
2021/05/31 MySQL
python for循环赋值问题
2021/06/03 Python
Vue router配置与使用分析讲解
2022/12/24 Vue.js