CodeIgniter:多个数据库 - 在第二个数据库中访问数据库配置

spa*_*kee 9 database codeigniter multiple-databases

我一直在寻找使用CodeIgniter的多个数据库.如果我提前知道数据库是什么,那么我可以在配置文件中设置信息,然后调用我需要的任何数据库组.

但是,在我的情况下,我需要将该数据库信息存储在另一个数据库中.它是一种主数据库,包含有关客户的一般信息,包括存储客户数据的数据库和凭据.然后,该供应商可以随时添加客户,并将每个客户的数据分隔在不同的数据库中.

如何根据我从CodeIgniter中的master数据库返回的值设置数据库和凭据,或者甚至有办法做到这一点?

谁能指出我正确的方向?提前感谢任何建议.

swa*_*ins 10

从文档(https://www.codeigniter.com/user_guide/database/connecting.html):

此函数的第一个参数可以选择用于从配置文件中指定特定的数据库组,或者甚至可以为配置文件中未指定的数据库提交连接值.

所以你会做这样的事情,用master数据库中的值替换值:

$config['hostname'] = "localhost";
$config['username'] = "myusername";
$config['password'] = "mypassword";
$config['database'] = "mydatabase";
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$config['cache_on'] = FALSE;
$config['cachedir'] = "";
$config['char_set'] = "utf8";
$config['dbcollat'] = "utf8_general_ci";

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

如果需要维护与master数据库和客户数据库的连接,请将最后一行更改为:

$customer_db = $this->load->database($config, TRUE);

// to use the master database:
$this->db->query("SELECT * FROM my_table");

// to then use the customer database:
$customer_db->query("SELECT * FROM whatever");
Run Code Online (Sandbox Code Playgroud)


小智 7

使master成为默认数据库,使第二个数据库的客户
$ active_group ='default'; $ active_record = TRUE;

    $db['default']['hostname'] = '';
    $db['default']['username'] = '';
    $db['default']['password'] = '';
    $db['default']['dbdriver'] = '';
    $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['secondDatabase']['hostname'] = '';
    $db['secondDatabase']['username'] = '';
    $db['secondDatabase']['password'] = '';
    $db['secondDatabase']['dbdriver'] = '';
    $db['secondDatabase']['dbprefix'] = '';
    $db['secondDatabase']['pconnect'] = TRUE;
    $db['secondDatabase']['db_debug'] = TRUE;
    $db['secondDatabase']['cache_on'] = FALSE;
    $db['secondDatabase']['cachedir'] = '';
    $db['secondDatabase']['char_set'] = 'utf8';
    $db['secondDatabase']['dbcollat'] = 'utf8_general_ci';
    $db['secondDatabase']['swap_pre'] = '';
    $db['secondDatabase']['autoinit'] = TRUE;
    $db['secondDatabase']['stricton'] = FALSE;
Run Code Online (Sandbox Code Playgroud)

您可以在控制器或模型中加载第二个数据库

$DB2 = $this->load->database('secondDatabase', TRUE); 
Run Code Online (Sandbox Code Playgroud)