Php 在Codeigniter中加载默认数据库

Php 在Codeigniter中加载默认数据库,php,database,codeigniter,config,Php,Database,Codeigniter,Config,我正在使用一个helper函数切换到一些模型构造函数中的用户数据库,如下所示: public function __construct(){ parent::__construct(); $this->load->helper('general'); switch_to_user_db(); } 我的general_助手执行以下操作: function switch_to_user_db($userID = NULL){ $CI =& ge

我正在使用一个helper函数切换到一些模型构造函数中的用户数据库,如下所示:

public function __construct(){
    parent::__construct();

    $this->load->helper('general');
    switch_to_user_db();
}
我的general_助手执行以下操作:

function switch_to_user_db($userID = NULL){
    $CI =& get_instance();

    $userID = ($userID !== NULL) ? $userID : $CI->user->ID;

    $dbParams = array(
        'hostname' => 'localhost',
        'username' => 'dbUserName',
        'password' => 'dbPassword',
        'database' => 'user_db_'.$userID,
        'dbdriver' => 'mysql'
    );

    $CI->load->database($dbParams, FALSE, TRUE);
}
我希望在使用另一个helper函数处理完用户DB后,能够切换回默认DB,但我没有机会访问默认数据库配置项

function switch_to_default_db(){
    $CI =& get_instance();

    $CI->load->database('default');
    echo $CI->db->database;      //Echoes e.g. "user_db_4"
}

是否有任何方法可以访问原始的db配置项,而无需再次读取实际的配置文件?

如果将load函数的第二个参数设置为TRUE,它将返回具有所提供设置的db对象实例

因此,不是:

$CI->load->database('usrTable');
你可以做:

$newDb = $CI->load->database('usrTable',TRUE);
然后为用户数据库查询使用$newDb对象,默认基仍将正常工作

顺便说一下,您可以将配置放在database.php上,如下所示

$db['user']['hostname'] = 'host';
$db['user']['username'] = 'user';
$db['user']['password'] = 'pass';
$db['user']['database'] = 'db';
(和其他参数)

然后像这样加载数据库

$userDb = $this->load->database('user', true); 
(如果超出范围,则为$CI)