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中将字符串转为HTML的实体引用的一个类
Feb 03 PHP
php页面消耗内存过大的处理办法
Mar 18 PHP
ThinkPHP3.1新特性之G方法的使用
Jun 19 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
Aug 22 PHP
php循环table实现一行两列显示的方法
Jun 04 PHP
Zend Framework框架路由机制代码分析
Mar 22 PHP
PHPStrom 新建FTP项目以及在线操作教程
Oct 16 PHP
PHP实现下载远程图片保存到本地的方法
Jun 19 PHP
php连接MSsql server的五种方法总结
Mar 04 PHP
laravel框架 api自定义全局异常处理方法
Oct 11 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
Nov 10 PHP
PHP扩展安装方法步骤解析
Nov 24 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
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
php中的观察者模式简单实例
2015/01/20 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
TNC vs BOOM BO3 第三场2.13
2021/03/10 DOTA
jquery中常用的SET和GET
2009/01/13 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
2016/06/03 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
Fetch超时设置与终止请求详解
2019/05/18 Javascript
Vue如何循环提取对象数组中的值
2020/11/18 Vue.js
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
Python装饰器的函数式编程详解
2015/02/27 Python
python实现class对象转换成json/字典的方法
2016/03/11 Python
Python用threading实现多线程详解
2017/02/03 Python
基于Python os模块常用命令介绍
2017/11/03 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
2020/04/23 Python
Python3从零开始搭建一个语音对话机器人的实现
2019/08/23 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
CSS3绘制六边形的简单实现
2016/08/25 HTML / CSS
HTML5中通过li-canvas轻松实现单图、多图、圆角图绘制,单行文字、多行文字等
2018/11/30 HTML / CSS
AmazeUI框架搭建的方法步骤(图文)
2020/08/17 HTML / CSS
Nebula美国官网:便携式投影仪
2019/03/15 全球购物
致标枪运动员广播稿
2014/02/06 职场文书
机关门卫的岗位职责
2014/04/29 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书