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 25 PHP
php生成略缩图代码
Jul 16 PHP
PHP跨时区(UTC时间)应用解决方案
Jan 11 PHP
基于PHP Socket配置以及实例的详细介绍
Jun 13 PHP
XAMPP安装与使用方法详细解析
Nov 27 PHP
使用配置类定义Codeigniter全局变量
Jun 12 PHP
Zend Framework+smarty用法实例详解
Mar 19 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
Mar 22 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
PHP中引用类型和值类型功能与用法示例
Feb 26 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
Feb 28 PHP
PHP全局使用Laravel辅助函数dd
Dec 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
模仿OSO的论坛(四)
2006/10/09 PHP
JS与PHP向函数传递可变参数的区别实例代码
2011/05/18 PHP
基于MySQL分区性能的详细介绍
2013/05/02 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
浅谈PHP array_search 和 in_array 函数效率问题
2019/10/15 PHP
JavaScript Eval 函数使用
2010/03/23 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
2013/07/09 Javascript
Javascript操作表单实例讲解(下)
2016/06/20 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
js实现登录验证码
2016/12/22 Javascript
解析JavaScript模仿块级作用域
2016/12/29 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
2018/03/28 Javascript
简单介绍react redux的中间件的使用
2018/04/06 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
小程序实现列表删除功能
2018/10/30 Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
2019/09/24 Javascript
jQuery实现消息弹出框效果
2019/12/10 jQuery
详解Vue之计算属性
2020/06/20 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
Python读写txt文本文件的操作方法全解析
2016/06/26 Python
python ansible服务及剧本编写
2017/12/29 Python
python中的for循环
2018/09/28 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
Python数据库小程序源代码
2019/09/15 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
完美解决keras 读取多个hdf5文件进行训练的问题
2020/07/01 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
如何写一封打动人心的求职信
2014/02/17 职场文书
财务负责人任命书
2014/06/06 职场文书
大学生国庆节65周年演讲稿范文
2014/09/25 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS