CI框架多个mysql数据库进行切换的思路

这个问题是我最近刚刚学会的一个思路,可以来回自由切换到你想要的数据库,
首先:你要在database配置文件中配置好你默认的数据库,主要是用来你一进去就要操作的数据库,如图:
这里写图片描述

然后在记得这个数据库中新建一个表,就是用来后面切记数据库的表,这个表中所包含的字段就是配置数据库时所需要的字段,如下图:
这里写图片描述
然后就是,代码的编写,在MY_Controller.php里面编写,在公共部分类中去执行,

function switch_client_db($dbsettingid){
    //参数$dbsettingid是一个条件,想用到那个数据库根据前面设置表结构的时候区分条件来给打这里取出相应的数据库的信息,然后利用变量来配置想要的数据库,这段代码就是这个意思
        $dbsetting_info = $this->client_model->get_dbsetting_info(array('user_id'=>$dbsettingid,'type'=>'master'));
        $dbslave_info = $this->client_model->get_dbsetting_info(array('user_id'=>$dbsettingid,'type'=>'master'));

        $dbsetting_info['hostname'] = '这里是你的数据库地址';
        $dbsetting_info['username'] = '名字';
        $dbsetting_info['password'] = '密码';


        if(!empty($dbsetting_info)){

            $this->db_client_slave = $this->db_client = $this->load->database($dbsetting_info, true);  
        }

        $this->db_slave = $this->load->database('slave', true);

    }

还没有算完,接下来就是刚才说到要查到索取的数据库信息,这里还要配置你的model里面查询的数据库信息设置

/**
     * 根据id返回数据库信息
     * @param unknown_type $dbsetting_id
     */
    function get_dbsetting_info($dbsetting_id){
        if( empty($dbsetting_id) ) return false;
        if( is_array($dbsetting_id) )
            $this->db->where($dbsetting_id);
        else
            $this->db->where("user_id", $dbsetting_id);
        $query = $this->db->get($this->dbsetting_table);

        $dbsetting_info = $query->row_array();
//      pr($this->db->last_query());
        return $dbsetting_info;
    }

上面这个方法就是根据你传进来的条件,来查找所对应的数据库信息,在这里基本上就是介绍完了。

相关内容推荐