php切换数据库连接,thinkphp切换数据库链接方法汇总

一、在Model类中进行切换【推荐】

1、全局切换

此Model类中所有的操作都是使用的$connection的配置参数

//在模型里单独设置数据库连接信息

protected $connection = array(

'db_type'  => 'mysql',

'db_user'  => 'root',

'db_pwd'   => '123456',

'db_host'  => 'localhost',

'db_port'  => '3306',

'db_name'  => 'thinkphp',

);

protected $connection = 'mysql://root:123456@localhost/thinkphp';

2、局限到某一方法

可能某些时候我们只是需要某一个方法去执行读取其他的数据库的操作

//config.php

在项目配置中添加

'OTHER_DB_CONFIG' => array(

'db_type'  => 'mysql',

'db_user'  => 'root',

'db_pwd'   => '123456',

'db_host'  => 'localhost',

'db_port'  => '3306',

'db_name'  => 'thinkphp',

)

'OTHER_DB_CONFIG' => 'mysql://root:123456@localhost/thinkphp'

配置项,是为了方便简介的设置而已,你在Model里定义也没事

//YourModel.class.php

public function switchDb(){

//此处的1为初次使用其他数据库链接时的设定的编号,以后在使用此链接时只需要db(1)即可,db(0)是默认的

$this->db(1,"OTHER_DB_CONFIG")->query();

//切换会默认的

$this->db(0);

}

二、在M()实例化对象时切换

3、M方法实例化时切换

$model = M('TableName', 'db_','OTHER_DB_CONFIG');

不过我在使用中M()切换后此后的M()方法使用的数据库链接也都是切换后的,也就是说即便你之后的M()没有传入后两个参数,它也没有去使用项目配置里默认的,这让我有些苦恼,只能写在Model里了,虽然都是某个表的实例模型,但貌似M()切换会对其他的表的数据库链接造成影响,木找到回归默认链接的方法,知道的求告知补脑~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值