我想为我的程序的一部分更改一些数据库设置。
在我的设置中,数据库类是使用类似
的配置自动加载的$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '****';
$db['default']['database'] = 'database';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
在脚本的一部分我想更改$db['default']['keyname']
的值,我该怎么做?
答案 0 :(得分:2)
有怎样的课程>检查http://codeigniter.com/user_guide/libraries/config.html
你怎么也不能改变数据库连接设置....它们在你的配置之前就已经加载了..
答案 1 :(得分:2)
您应该添加另一组凭据,而不是动态更改现有凭据:
$db['another_db']['hostname'] = 'localhost';
$db['another_db']['username'] = 'root';
$db['another_db']['password'] = '****';
$db['another_db']['database'] = 'database';
$db['another_db']['dbdriver'] = 'mysql';
$db['another_db']['dbprefix'] = '';
$db['another_db']['pconnect'] = TRUE;
$db['another_db']['db_debug'] = TRUE;
$db['another_db']['cache_on'] = FALSE;
$db['another_db']['cachedir'] = '';
$db['another_db']['char_set'] = 'utf8';
$db['another_db']['dbcollat'] = 'utf8_general_ci';
$db['another_db']['swap_pre'] = '';
$db['another_db']['autoinit'] = TRUE;
$db['another_db']['stricton'] = FALSE;
您可以通过执行以下操作加载此其他数据库:
$another_db = $this->load->database('another_db', TRUE);
然后像普通数据库驱动程序一样使用它:
$another_db->select();
...etc
答案 2 :(得分:0)
稍微hacky,但你可以添加这样的东西到system / database / DB_driver.php(我用db密码更改作为例子): -
public function update_pw($value) {
$this->password = $value;
}
然后在你的项目中,做
$this->db->update_pw('example');
$this->db->reconnect();
具体取决于您要在配置中更改的内容 - 更重要的是,为什么要更改它 - 这可能是也可能不是最佳选择。
答案 3 :(得分:0)
此外,您始终可以使用Global var。通常我总是有2个数据库。一个用于生产,一个用于开发。您只需检查var以加载其中一个。
该概念可用于在应用程序的一个部分中加载一个数据库,在其他部分中加载其他部分。但是,我会像Brendan所指出的那样内置解决方案。