Codeigniter加载不同的数据库配置

use*_*264 1 php mysql codeigniter

在CodeIgniter中,如何从单独的文件而不是默认的config \ database.php加载数据库?

可以说,在库下,我有一个名为db_configs的文件夹。在每个数据库中,详细信息将存储在单独的文件中,例如。DB_01.php,DB_02.php等。

谢谢,

DFr*_*end 5

使用CI内置的功能要容易得多,因为CI可以在一个文件中定义多个数据库连接。否则,就是重新发明轮子。

加载数据库时,可以选择任何给定的连接集(在database.php中定义)。例如,给定DB_01和DB_02,您可以使用

$this->load->database('DB_01');
Run Code Online (Sandbox Code Playgroud)

要么

$this->load->database('DB_02');
Run Code Online (Sandbox Code Playgroud)

如果同时需要两者,可以执行此操作

$db1 = $this->load->database('DB_01', TRUE);
$db2 = $this->load->database('DB_02', TRUE);
Run Code Online (Sandbox Code Playgroud)

但是,如果您必须有单独的文件,则有两种不同的方法。也许最简单的是使用助手

application / helpers / db2_helper.php

function db2Config()
{
  return array(
    'dsn' => '',
    'hostname' => 'localhost',
     ... etc.
  );
}
Run Code Online (Sandbox Code Playgroud)

在某些控制器中

$this->load->helper('db2');
$db2_settings = db2Config();
$this->load->database($db2_settings);
Run Code Online (Sandbox Code Playgroud)

也可以使用Config类完成此操作。

application / config / db2.php

<?php

$config['dsn'] = '';
$config['hostname'] = 'localhost';
$config['username'] = 'IAmAUser';
$config['password'] = 'mypassword';
$config['database'] = 'theDB';
$config['dbdriver'] = 'mysqli';
$config['dbprefix'] = '';
$config['pconnect'] = TRUE;
...
Run Code Online (Sandbox Code Playgroud)

在某些控制器中

$this->config->load('db2', TRUE);
$db2_config = $this->config->item('db2');
$this->load->database($db2_config);
Run Code Online (Sandbox Code Playgroud)