当前位置: 首页 > news >正文

tp5连接多个数据库

一、如果你的主数据库配置文件都在config.php里

直接在config.php中中定义db2
在这里插入图片描述

控制器中打印一下:

<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
use think\Request;
class Index extends Controller
{public function index(){//连接默认的数据库$db1=Db::name('users')->select();//连接定义的第二个数据库$db2=Db::connect('db2');$result=$db2->name('ceshi')->select();print_r($result);die;return view('index');}
}

 

二、如果你的主数据库配置在database.php里

在 application/database.php 中,添加:

/*** 配置第二个数据库*/
'db2' => [// 数据库类型'type'            => Env::get('database2.type', 'mysql'),// 服务器地址'hostname'        => Env::get('database2.hostname', '127.0.0.1'),// 数据库名'database'        => Env::get('database2.database', ''),// 用户名'username'        => Env::get('database2.username', ''),// 密码'password'        => Env::get('database2.password', ''),// 端口'hostport'        => Env::get('database2.hostport', ''),// 连接dsn'dsn'             => '',// 数据库连接参数'params'          => [],// 数据库编码默认采用 utf8mb4'charset'         => Env::get('database2.charset', 'utf8mb4'),// 数据库表前缀'prefix'          => Env::get('database2.prefix', ''),// 数据库调试模式'debug'           => Env::get('database2.debug', false),// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)'deploy'          => 0,// 数据库读写是否分离 主从式有效'rw_separate'     => false,// 读写分离后 主服务器数量'master_num'      => 1,// 指定从服务器序号'slave_no'        => '',// 是否严格检查字段是否存在'fields_strict'   => true,// 数据集返回类型'resultset_type'  => 'array',// 自动写入时间戳字段'auto_timestamp'  => false,// 时间字段取出后的默认时间格式,默认为Y-m-d H:i:s'datetime_format' => false,// 是否需要进行SQL性能分析'sql_explain'     => false,]

整个 database.php 文件如下,

<?phpuse think\Env;return [// 数据库类型'type'            => Env::get('database.type', 'mysql'),// 服务器地址'hostname'        => Env::get('database.hostname', '127.0.0.1'),// 数据库名'database'        => Env::get('database.database', ''),// 用户名'username'        => Env::get('database.username', ''),// 密码'password'        => Env::get('database.password', ''),// 端口'hostport'        => Env::get('database.hostport', ''),// 连接dsn'dsn'             => '',// 数据库连接参数'params'          => [],// 数据库编码默认采用 utf8mb4'charset'         => Env::get('database.charset', 'utf8mb4'),// 数据库表前缀'prefix'          => Env::get('database.prefix', ''),// 数据库调试模式'debug'           => Env::get('database.debug', false),// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)'deploy'          => 0,// 数据库读写是否分离 主从式有效'rw_separate'     => false,// 读写分离后 主服务器数量'master_num'      => 1,// 指定从服务器序号'slave_no'        => '',// 是否严格检查字段是否存在'fields_strict'   => true,// 数据集返回类型'resultset_type'  => 'array',// 自动写入时间戳字段'auto_timestamp'  => false,// 时间字段取出后的默认时间格式,默认为Y-m-d H:i:s'datetime_format' => false,// 是否需要进行SQL性能分析'sql_explain'     => false,/*** 配置第二个数据库*/'db2'             => [// 数据库类型'type'            => Env::get('database2.type', 'mysql'),// 服务器地址'hostname'        => Env::get('database2.hostname', '127.0.0.1'),// 数据库名'database'        => Env::get('database2.database', ''),// 用户名'username'        => Env::get('database2.username', ''),// 密码'password'        => Env::get('database2.password', ''),// 端口'hostport'        => Env::get('database2.hostport', ''),// 连接dsn'dsn'             => '',// 数据库连接参数'params'          => [],// 数据库编码默认采用 utf8mb4'charset'         => Env::get('database2.charset', 'utf8mb4'),// 数据库表前缀'prefix'          => Env::get('database2.prefix', ''),// 数据库调试模式'debug'           => Env::get('database2.debug', false),// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)'deploy'          => 0,// 数据库读写是否分离 主从式有效'rw_separate'     => false,// 读写分离后 主服务器数量'master_num'      => 1,// 指定从服务器序号'slave_no'        => '',// 是否严格检查字段是否存在'fields_strict'   => true,// 数据集返回类型'resultset_type'  => 'array',// 自动写入时间戳字段'auto_timestamp'  => false,// 时间字段取出后的默认时间格式,默认为Y-m-d H:i:s'datetime_format' => false,// 是否需要进行SQL性能分析'sql_explain'     => false,]
];

 .env文件配置如下:

[app]
debug = false
trace = false[database]
hostname = 127.0.0.1
database = db1
username = db1
password = 123456
hostport = 3306
prefix = data1_
charset = utf8mb4[database2]
hostname = 127.0.0.1
database = db2
username = db2
password = 123456
hostport = 3306
prefix = data2_
charset = utf8mb4

控制器中:

<?php$db2 = Db::connect(config('database.db2'));
$res = $db2->name("user")->where(['status' => 1])->select();dump($res);exit();

相关文章:

tp5连接多个数据库

一、如果你的主数据库配置文件都在config.php里 直接在config.php中中定义db2&#xff1a; 控制器中打印一下&#xff1a; <?php namespace app\index\controller; use think\Controller; use think\Db; use think\Request; class Index extends Controller {public fun…...

SAP PO运维(一):系统概览异常处理

打开SAP PIPO Netweaver Administration界面,系统概览下显示异常: 参考SAP note: 2577844 - AS Java Monitoring and Logging parametrization best practice service/protectedwebmethods = SDEFAULT -GetVersionInfo -GetAccessPointList -ListLogFiles -ReadLogFile -Para…...

安全厂商安恒信息加入龙蜥社区,完成 与 Anolis OS 兼容适配

近日&#xff0c;杭州安恒信息技术股份有限公司&#xff08;以下简称“安恒信息”&#xff09;签署了 CLA&#xff08;Contributor License Agreement&#xff0c;贡献者许可协议&#xff09;&#xff0c;正式加入龙蜥社区&#xff08;OpenAnolis&#xff09;&#xff0c;并成为…...

maven找不到jar包

配置settings.xml文件之后出现报错找不到jar包 先改maven设置: 然后在重新清理构建项目: 可以通过执行以下命令清理本地 Maven 仓库 mvn dependency:purge-local-repository...

MySQL的数据目录

文章目录 MySQL的数据目录1. MYSQL目录结构2. 数据库与文件系统的关系2.1 查看默认数据库2.2 数据库在文件系统中的表示2.1.1 MyISAM存储引擎模式2.1.2 InnoDB存储引擎模式 2.3 视图在文件系统中的表示2.4 小结 MySQL的数据目录 1. MYSQL目录结构 查询主要目录结构&#xff1a…...

详解MySQL索引+面试题

前言: 📕作者简介:热爱编程的小七,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年! 📘相关专栏Java基础语法,JavaEE初阶,数据库,数据结构和算法系列等,大家有兴趣的可以看一看。 😇😇😇有兴趣的话关注博主一起学习,一起进步吧! 一、索引概述…...

设计模式:桥接器模式(C++实现)

桥接器模式&#xff08;Bridge Pattern&#xff09;是一种结构设计模式&#xff0c;它将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。桥接器模式通常用于需要在多个维度上扩展和变化的情况下&#xff0c;将抽象和实现解耦。 以下是一个简单的C桥接器模式的示例&a…...

公网远程访问GeoServe Web管理界面【内网穿透】

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现&#xff0c;利用GeoServer可以方便地发布地图数据&#xff0c;允许用户对要素数据进行更新、删除、插入…...

AIMS医院手术麻醉信息系统全套源码,自主版权,开箱即用

手术麻醉临床信息系统有着完善的临床业务功能&#xff0c;能够涵盖整个围术期的工作&#xff0c;能够采集、汇总、存储、处理、展现所有的临床诊疗资料。通过该系统的实施&#xff0c;能够规范麻醉科的工作流程&#xff0c;实现麻醉手术过程的信息数字化&#xff0c;自动生成麻…...

中秋特辑——3D动态礼盒贺卡(可监听鼠标移动)

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…...

Json文件序列化读取

Json文件 [{"name":"清华大学","location":"北京","grade":"1"},{"name":"北京大学","location":"北京","grade":"2"} ] 安装包 代码 Program.c…...

ClickHouse(15)ClickHouse合并树MergeTree家族表引擎之GraphiteMergeTree详细解析

GraphiteMergeTree该引擎用来对Graphite数据(图数据)进行瘦身及汇总。对于想使用ClickHouse来存储Graphite数据的开发者来说可能有用。 如果不需要对Graphite数据做汇总&#xff0c;那么可以使用任意的ClickHouse表引擎&#xff1b;但若需要&#xff0c;那就采用GraphiteMerge…...

面试题库(二):Java基础

hashmap1.7跟1.8?优化点?红黑树化为什么是8?退化为什么?dp怎么玩?回溯怎么玩?递归怎么玩?stack能解决啥问题?fifo能解决啥问题?dfs怎么玩?bfs怎么玩?双亲委派模型。JDBC和双亲委派模型关系TCP四次挥手,TIME_WAIT发生在哪一方 TIME_WAIT过多如何处理HashMap底层结构…...

Linux:无法接收组播数据

1、检查Linux系统是否接收到组播数据 使用tcpdump工具&#xff0c;检查源或者目的地址&#xff08;例如&#xff0c;239.1.1.1:9001&#xff09;的数据包 tcpdump -i ens33 host 239.1.1.1 port 9001 2、关闭防火墙 临时关闭&#xff1a; systemctl stop firewalld service ip…...

R语言贝叶斯非参数模型:密度估计、非参数化随机效应META分析心肌梗死数据...

全文链接&#xff1a;http://tecdat.cn/?p23785 最近&#xff0c;我们使用贝叶斯非参数&#xff08;BNP&#xff09;混合模型进行马尔科夫链蒙特卡洛&#xff08;MCMC&#xff09;推断&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 概述 相关视频 在这篇文…...

在gazebo仿真环境中加载多个机器人

文章目录 前言一、基本概念1、xacro2、Gazebo 加载单个机器人模型 二、原先launch文件代码三、 修改launch文件加载多个机器人总结 前言 单个机器人的各项仿真实验都基本完成&#xff0c;也实现了远程控制&#xff0c;接下来主要对多机器人编队进行仿真实验&#xff0c;在进行…...

少有人走的路阅读笔记

前言 仅记录学习笔记&#xff0c;如有错误欢迎指正。 感受&#xff1a; 刚看完这本书&#xff0c;因为是很多天碎片化的时间看的&#xff0c;所以肯定对最新的内容印象较为深刻&#xff1b;作者是一个心理医生&#xff0c;从他的视角讲述了常人应该怎么样让自己的心灵心智更加…...

极简解析!IP计费的s5爬虫IP

大家好&#xff01;今天我将为大家分享关于s5爬虫IP服务的知识。对于经常做爬虫的小伙伴来说&#xff0c;需要大量的爬虫IP支持爬虫业务&#xff0c;那么对于选择什么样的爬虫IP&#xff0c;我想我有很多发言权。 下面我们一起了解下IP计费的s5爬虫IP的知识&#xff0c;废话不…...

动静分离和前后端分离

动静分离和前后端分离 一、动静分离 侧重单体项目的静态资源分离 二、前后端分离 前后端完全分离...

【SpringBoot】集成SpringSecurity+JWT实现多服务单点登录,原来这么easy

Spring BootSpring SecurityJWT实现单点登录 源码 链接&#xff1a;https://pan.baidu.com/s/1EINPwP4or0Nuj8BOEPsIyw 提取码&#xff1a;kbue 一.概念 1.1.SSO 介绍&#xff1a; 单点登录(SingleSignOn&#xff0c;SSO)&#xff0c;当用户在身份认证服务器上登录一次以…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...