跳到主要内容

如何在CodeIgniter中连接多个数据库?

参考答案:

在CodeIgniter中连接多个数据库是一个相对简单的任务。你可以按照以下步骤进行操作:

  1. 配置数据库连接

application/config/database.php 文件中,你可以配置多个数据库连接。默认情况下,它有一个名为 default 的连接组。你可以添加更多的连接组,每个组都代表一个数据库连接。

例如,如果你想连接两个数据库 db1db2,你可以这样配置:

$active_group = 'default'; // 默认使用的数据库连接组
$query_builder = TRUE;

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'username_for_db1',
    'password' => 'password_for_db1',
    'database' => 'db1',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

$db['db2'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'username_for_db2',
    'password' => 'password_for_db2',
    'database' => 'db2',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);
  1. 在模型中使用不同的数据库连接

当你需要在模型中查询不同的数据库时,你可以使用 $this->load->database() 方法来加载特定的数据库连接组。然后,你可以使用 $this->db 对象来执行查询。

例如,在模型中查询 db2

class Some_model extends CI_Model {
    public function __construct() {
        parent::__construct();
        $this->load->database('db2', TRUE); // 加载db2连接,TRUE表示返回数据库对象
    }
    
    public function get_data() {
        $query = $this->db->get('some_table'); // 查询db2中的some_table表
        return $query->result_array();
    }
}
  1. 在控制器中使用不同的数据库连接

如果你需要在控制器中直接查询不同的数据库,你也可以按照类似的方式加载数据库连接组。但是,通常建议在模型中处理数据库操作,以保持代码的清晰和可维护性。 4. 注意事项

  • 确保你的服务器配置允许同时连接到多个数据库。
  • 在配置文件中,为每个数据库连接组提供正确的凭据和设置。
  • 当加载特定的数据库连接组时,该连接会替换默认的 $this->db 对象。因此,如果你需要在同一个模型或控制器中查询多个数据库,你可能需要为每个数据库创建一个不同的对象或重新加载默认连接。

通过遵循上述步骤,你可以在CodeIgniter中轻松地连接并使用多个数据库。