如何在codeigniter 3中根据输入变量建立多个数据库连接?例如,一个控制器有一个数据库,因此每个控制器都有一个不同的数据库。因为如果您从database.php配置中更改它,数据库名称将是恒定的,而不会根据控制器进行调整。请提供解决方案。非常感谢。
通常我们在"application/config/database.php"中设置数据库信息。如果您使用多个数据库,则需要在"application-config/database.php"中也设置它们。
通常,我们设置默认数据库,如:
$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "main_db";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$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;
现在,如果你想添加另一个数据库,你可以在一个新的数组中设置它——让我们称之为"db1"。并将其设置在"application/config/database.php"中,如下所示:
$db['db1']['hostname'] = "localhost";
$db['db1']['username'] = "root";
$db['db1']['password'] = "";
$db['db1']['database'] = "db1";
$db['db1']['dbdriver'] = "mysql";
$db['db1']['dbprefix'] = "";
$db['db1']['pconnect'] = TRUE;
$db['db1']['db_debug'] = FALSE;
$db['db1']['cache_on'] = FALSE;
$db['db1']['cachedir'] = "";
$db['db1']['char_set'] = "utf8";
$db['db1']['dbcollat'] = "utf8_general_ci";
$db['db1']['swap_pre'] = "";
$db['db1']['autoinit'] = TRUE;
$db['db1']['stricton'] = FALSE;
现在,如果你想在一个方法中使用db1,可以这样使用:
function example_method()
{
$db1 = $this->load->database('db1', TRUE);
$query = $db1->select(*')->get('users');
}