我在Codeigniter上遇到多个数据库连接问题。在我的database.php我配置了两个数据库。
$active_group = 'cms';
$active_record = FALSE;
$db['cms']['hostname'] = 'localhost';
$db['cms']['username'] = 'yoloo_cms';
$db['cms']['password'] = 'password';
$db['cms']['database'] = 'yoloo_cms';
$db['cms']['dbdriver'] = 'mysql';
$db['cms']['dbprefix'] = '';
$db['cms']['pconnect'] = TRUE;
$db['cms']['db_debug'] = TRUE;
$db['cms']['cache_on'] = FALSE;
$db['cms']['cachedir'] = '';
$db['cms']['char_set'] = 'utf8';
$db['cms']['dbcollat'] = 'utf8_general_ci';
$db['cms']['swap_pre'] = '';
$db['cms']['autoinit'] = TRUE;
$db['cms']['stricton'] = FALSE;
$db['hazeleger']['hostname'] = 'localhost';
$db['hazeleger']['username'] = 'yoloo_websites';
$db['hazeleger']['password'] = 'password2';
$db['hazeleger']['database'] = 'yoloo_hazeleger';
$db['hazeleger']['dbdriver'] = 'mysql';
$db['hazeleger']['dbprefix'] = '';
$db['hazeleger']['pconnect'] = TRUE;
$db['hazeleger']['db_debug'] = TRUE;
$db['hazeleger']['cache_on'] = FALSE;
$db['hazeleger']['cachedir'] = '';
$db['hazeleger']['char_set'] = 'utf8';
$db['hazeleger']['dbcollat'] = 'utf8_general_ci';
$db['hazeleger']['swap_pre'] = '';
$db['hazeleger']['autoinit'] = TRUE;
$db['hazeleger']['stricton'] = FALSE;
在我的模型中,当我想连接到另一个数据库而不是通常的数据库时,我会使用它:
function __construct()
{
parent::__construct();
$this->load->database('hazeleger',TRUE);
}
但是,codeigniter始终连接到cms。当我删除
$active_group = 'cms';
$active_record = FALSE;
Codeingiter发出错误。我试过这个时
function __construct()
{
parent::__construct();
$db2 = $this->load->database('hazeleger',TRUE);
}
function test()
{
$query = "SELECT * FROM cms_modules";
$result = $db2->db->query($query);
return $db2->result();
}
它出错了。 Variabele db2不存在。 我只想在每种型号中选择我想连接的数据库。 但是不行,不行。有人知道,我如何使用不同的数据库 在模特。
非常感谢!!
答案 0 :(得分:5)
您必须将变量$ db2保存为类字段。您可以访问$ this-> db2 ...
答案 1 :(得分:1)
这是因为您最有可能设置在/application/config/autoload.php中 自动加载/创建数据库库。
打开autoload.php并查找此行:
$autoload['libraries'] = array('database');
从数组中删除'database'并保存。现在它应该按照预期在你的控制器中工作。
答案 2 :(得分:1)
对于未来访问者的参考,负载将沿着这些方向:
$this->db2 = $this->load->database('hazeleger',true);
答案 3 :(得分:1)
您必须更改db2类
$query = "SELECT * FROM cms_modules";
$result = $this->db2->query($query);
return result();