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警告Cannot use a scalar value as an array的解决方法
Jan 11 PHP
php打开远程文件的方法和风险及解决方法
Nov 12 PHP
php堆排序(heapsort)练习
Nov 13 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
Aug 21 PHP
php解析xml方法实例详解
May 12 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
win7安装php框架Yii的方法
Jan 25 PHP
基于PHP实现的多元线性回归模拟曲线算法
Jan 30 PHP
php删除二维数组中的重复值方法
Mar 12 PHP
PHP Trait功能与用法实例分析
Jun 03 PHP
PHP日期和时间函数的使用示例详解
Aug 06 PHP
PHP rsa加密解密算法原理解析
Dec 09 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
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
json2.js的初步学习与了解
2011/10/06 Javascript
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
JavaScript也谈内存优化
2014/06/06 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
JavaScript转换二进制编码为ASCII码的方法
2015/04/16 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
js模式化窗口问题![window.dialogArguments]
2016/10/30 Javascript
javascript 中关于array的常用方法详解
2017/05/05 Javascript
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
Python中设置变量访问权限的方法
2015/04/27 Python
在CMD命令行中运行python脚本的方法
2018/05/12 Python
python json.loads兼容单引号数据的方法
2018/12/19 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
浅析Python 引号、注释、字符串
2019/07/25 Python
Django中使用haystack+whoosh实现搜索功能
2019/10/08 Python
python中图像通道分离与合并实例
2020/01/17 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
办公室前台岗位职责范本
2013/12/10 职场文书
企业环保标语
2014/06/10 职场文书
关爱老人标语
2014/06/21 职场文书
审计局2014法制宣传日活动总结
2014/11/01 职场文书
后勤工作个人总结
2015/02/28 职场文书
考研英语辞职信
2015/05/13 职场文书
MySQL 计算连续登录天数
2022/05/11 MySQL
Go gorilla securecookie库的安装使用详解
2022/08/14 Golang