📜  使用多个数据库 codeigniter (1)

📅  最后修改于: 2023-12-03 15:22:23.520000             🧑  作者: Mango

使用多个数据库 codeigniter

CodeIgniter是一个非常流行的PHP框架,使用起来非常方便,而且文档非常全面。CodeIgniter默认只支持单个数据库连接,但是在某些情况下,需要同时连接多个数据库。本文将向您展示如何在CodeIgniter中使用多个数据库。

Step1: 配置多个数据库

为了在CodeIgniter中使用多个数据库,您需要在database.php中进行配置。在application/config/database.php中添加以下代码段:

$all_db = array(//名称
    'default' => array(
        'dsn'   => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => '',
        'database' => 'test1',
        'dbdriver' => 'mysql',
        'dbprefix' => '',
        'pconnect' => FALSE,
        'db_debug' => (ENVIRONMENT !== 'production'),
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encryption' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array()
    ),
    'test2' => array(
        'dsn'   => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => '',
        'database' => 'test2',
        'dbdriver' => 'mysql',
        'dbprefix' => '',
        'pconnect' => FALSE,
        'db_debug' => (ENVIRONMENT !== 'production'),
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encryption' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array()
    )
);
 
$active_group = 'default'; //默认数据库
$active_record = TRUE;
 
$db['default'] = $all_db[$active_group];
if($active_group!='default'){
    $db[$active_group] = $all_db[$active_group];
}

在上面的代码段中,我们定义了两个数据库:default和test2。您也可以根据您的需要为其命名。

Step2: 使用多个数据库

连接多个数据库后,您可以在代码中轻松地使用它们。例如,您可以使用以下代码片段:

<?php
class Test_model extends CI_Model {
    function __construct()
    {
        parent::__construct();
        $this->load->database();//默认读取 default 数据库
    }
    
    public function get_test1_data(){
        $db1 = $this->load->database('test2', TRUE); //连接test2 数据库
        $query = $db1->get('test1_table');
        return $query->result();
    }
    
    public function get_test2_data(){
        $db2 = $this->load->database('test2', TRUE); //连接test2 数据库
        $query = $db2->get('test2_table');
        return $query->result();
    }
}

上述代码片段中,您可以使用$this->load->database('database_name', TRUE);连接不同的数据库。TRUE参数将此数据库配置设置为默认数据库。在代码片段中,我们使用get_test1_data()和get_test2_data()方法来演示如何连接到不同的数据库并检索数据。

Step3: 总结

在CodeIgniter中,您可以轻松地连接多个数据库。只需在database.php中配置多个数据库,然后使用$this->load->database('database_name', TRUE);连接到该数据库。这项功能使得CodeIgniter成为一个更加强大的工具,可以满足各种需求,此外还有更多的开源代码和库可以使用,以提高工作效率。