问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

thinkphp M数据库无法切换

发布网友 发布时间:2022-05-01 20:45

我来回答

2个回答

懂视网 时间:2022-05-02 01:07

  原因:在我们实际的项目开发中,经常会遇到一个项目使用多个数据库,那么在使用thinkphp框架的时候,存在使用过程中数据库转换使用的问题,或者多个数据库同时使用的问题,接下来一起研究研究如何切换数据库。

 

  首先,我们在使用tp框架的时候会预先定义数据库连接和实例化的时候指定数据库连接,这样我们只能预定义连接一个数据库,然而我们还可以在模型操作过程中动态的切换数据库,支持切换到相同和不同的数据库类型。

 

  使用方法:

  Model->db("数据库编号","数据库配置");

  数据库编号:数据库编号用数字格式,对于已经调用过的数据库连接,是不需要再传入数据库连接信息的,系统会自动记录。对于默认的数据库连接,内部的数据库编号是0,因此为了避免冲突,请不要再次定义数据库编号为0的数据库配置。

  数据库配置:数据库配置的定义方式:支持数组、字符串以及调用配置参数三种格式。

  

  Db方法 调用后返回当前的模型实例,直接可以继续进行模型的其他操作,所以该方法可以在查询的过程中动态切换:

 

$this->db(1,"mysql://root:1234@www.xxx.com:3306/test")->query("查询SQL");

 

  该方法添加了一个编号为1的数据库连接,并自动切换到当前的数据库连接。

 

 当第二次切换到相同的数据库的时候,就不需要传入数据库连接信息了,可以直接使用:

$this->db(1)->query("查询SQL");

 

   那么,当我们需要切换回主数据库时,只需要:

$this->db(0);

 

 

  例如:定义一个主数据库和一个副数据库:

    

//主数据库配置0
‘DB_CONFIG1‘ = array( 
   ‘db_type‘ => ‘mysql‘, 
   ‘db_user‘ => ‘root‘, 
   ‘db_pwd‘ => ‘1234‘, 
 ‘db_host‘ => ‘localhost‘, 
   ‘db_port‘ => ‘3306‘, 
   ‘db_name‘ => ‘thinkphp‘
),
//副数据库配置1
‘DB_CONFIG2‘ => ‘mysql://root:1234@www.xxx.com:3306/thinkphp‘;

 

 

  对于上面例子中的数据库切换:

$this->db(1,"DB_CONFIG1")->query("查询SQL");
$this->db(2,"DB_CONFIG2")->query("查询SQL");

 

  那么在切换数据库后,怎么指向我们需要用到的数据表呢?  使用table方法指定要操作的数据表。

$this->db(1)->table("top_user")->find();

 

thinkphp之切换数据库

标签:test   方法   冲突   type   class   原因   参数   相同   接下来   

热心网友 时间:2022-05-01 22:15

//切换新数据库
$model = M();
//(sql_type://username:password@address:3306/db_name)
//sql_type:数据库类型mysql或者mysqli
$result = $model->db(1,"sql_type://username:password@address:3306/db_name");
//sql语句
$query_sql = XXXXXX;
//查询数据并返回
$data = $result->db(1)->query($query_sql);

追问不觉得这样很麻烦么?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
人字梯有什么安全隐患吗 怎样激发青春期孩子的内驱力 如何激发青春期孩子的内驱力 ...小题1:移船相近邀相见,添酒回灯重开宴。 , &n... L1和L2串联 电压表并联在L1两端 当L1断路后 电压表测的为什么就成了电源... L1和L2串联,用电压表测L1两端的电压,L2不亮时,电流表为什么测的是电源电... 电路上传连两个灯泡L1与L2电压表测L1电压,当L1短路与断路时电压表情况... 对方拖着不办离婚手续该怎么办 计算机一级电子表格怎么拿分 如何配置思源黑体为latex中文字体? 思源黑体字体怎么安装 清理电脑垃圾结果电脑什么也打不开了 类似于你我贷,乐意花,快贷的口子,芝麻分不好的,支付宝有过逾期 清理电脑中的垃圾为什么桌面的程序打开不了 跟你我贷一样好放款的有那些 小米笔记本摄像头在腾讯会议中一直打开不了? 古筝曲名 怎么处理古筝三级曲子挤牛奶?要怎么样的速度? 古筝有什么简单又欢快的曲子?二年级的曲子。 求袁沙弹古筝曲挤牛奶的视频 请问有哪位音乐人把挤牛奶古筝曲改编成钢琴曲的吗 古筝2级曲目中《挤牛奶》的曲谱 古筝曲《挤牛奶》该怎样弹才好? 挤牛奶古筝曲的强弱分析 挤牛奶的歌词 上台表演该怎么介绍古筝曲挤牛奶 音乐节无人机非法飞行怎么处理的? 千架无人机组成仙鹤飞临黄鹤楼,你能描述一下盛况吗? 空域造景媒体是什么? 私人小型无人机表演怎么收费? 请教怎么将静态资源同步到阿里云 OSS 上· Ruby China 求几个白户芝麻分口子,谢谢类似你我贷秒啦那种,利息 LAXDN HOMME ARROW注册过商标吗?还有哪些分类可以注册? 先进光电科技(镇江)有限公司怎么样? 镇江先进光电,第一天面试,被羞辱,骂的狗血喷头,谁去谁倒霉,你好好和面试人说话,她把你骂的抬不起头 我怎样才能把我手机上的早上好,晚安的图片去掉呀? 关于网贷平台来分期和你我贷这两个平台上不上征信以及欠款3000不还会怎么样? 镇江大港什么电子厂招聘] 镇江先进光电休息时间放的英文歌叫什么 广州南沙晶科电子厂怎么样 你我贷年前会放款吗 电脑清理了垃圾却打不开是么回事电脑进行了全面清理却打不开 笔记本清理垃圾重启软件之后打不开了是怎么回事 晶科电子的媒体报道 镇江大港有什么好的电子厂 广州南沙晶科电子如何 男士用什么牌子的化妆品好 我老婆从日本带了一只手表给我,品牌是TETE HOMME,我不知道这是什么品牌的, 网络游戏的延迟那个延迟的数值是越高越好还是越低越 本地延迟和世界延迟都是什么意思啊?哪个比较重要 请问电信与联通网络延迟哪个高?