Php 在Codeigniter中加载默认数据库
我正在使用一个helper函数切换到一些模型构造函数中的用户数据库,如下所示: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
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)