【问题标题】:Codeigniter - how do I update my database config settings dynamically?Codeigniter - 如何动态更新我的数据库配置设置?
【发布时间】:2012-10-24 11:28:31
【问题描述】:

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

在我的设置中,数据库类会自动加载一个如下所示的配置

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

【问题讨论】:

    标签: php codeigniter config


    【解决方案1】:

    您应该添加另一组凭据,而不是动态更改现有凭据:

    $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】:

      有怎么上课>查看http://codeigniter.com/user_guide/libraries/config.html

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

      【讨论】:

        【解决方案3】:

        有点老套,但你可以在 system/database/DB_driver.php 中添加类似这样的内容(我以更改 db 密码为例):-

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

        然后在你的项目中,做

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

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-08-28
            • 2017-11-23
            • 2012-06-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多