thinkphp之切换数据库

Posted 小king哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp之切换数据库相关的知识,希望对你有一定的参考价值。

1.数据库切换

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

 

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

 

  使用方法:

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

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

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

  

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

 

$this->db(1,"mysql://root:[email protected]: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:[email protected]: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之切换数据库的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp 多套模板切换怎么做。最好贴几段代码。

thinkphp5多语言切换,大神们帮帮忙!

超级有用的9个PHP代码片段

如何在切换片段时停止 AsyncTask?

ThinkPHP Model+数据库的切换使用

Thinkphp5 实现动态模板主题多个模板切换