1

我想为我的程序的一部分更改一些数据库设置。

在我的设置中,数据库类自动加载了一个看起来像这样的配置

$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'],我该怎么做?

4

4 回答 4

2

有如何类>检查它http://codeigniter.com/user_guide/libraries/config.html

您如何无法更改数据库连接设置..它们在您的配置之前很久就加载了..

于 2012-10-24T11:30:33.493 回答
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
于 2012-10-24T15:09:13.047 回答
0

有点 hacky,但你可以在 system/database/DB_driver.php 中添加这样的东西(我以 db 密码更改为例):-

public function update_pw($value) {
  $this->password = $value;
}

然后在你的项目中,做

$this->db->update_pw('example');
$this->db->reconnect();

具体取决于您要在配置中更改的内容 - 更重要的是,为什么要更改它 - 这可能是也可能不是最佳选择。

于 2012-10-24T11:56:05.723 回答
0

您也可以随时使用全局变量。通常我总是有 2 个数据库。一种用于生产,一种用于开发。您只需检查该 var 以加载一个或另一个。

该概念可用于在应用程序的一个部分加载一个数据库,而在另一部分加载另一个数据库。但是,我会使用 Brendan 指出的内置解决方案。

于 2012-10-26T14:31:38.217 回答