如何在CodeIgniter中切换到不同的默认数据库?

时间:2014-02-09 09:59:58

标签: php codeigniter codeigniter-2

我在数据库配置文件中设置了两个不同的连接。一旦我连接到数据库之一,如果我连接到第二个数据库仍然连接不会更改。我找不到表错误。

$this->load->database(); //connecting to default db
$this->db->query('SELECT * from user'); //user table in default db and no error

$this->load->database('second_db');//connecting to second db
$this->db->load('SELECT * from statistic'); //table exists in second db but getting error
//The same work if I comment the first two lines

4 个答案:

答案 0 :(得分:1)

你可以这样试试:

$this->load->database('second_db', TRUE);

并在database.php中为'pconnect'设置FALSE: 默认为:

$db['default']['pconnect'] = FALSE; 

和第二个:

$db['second_db']['pconnect'] = FALSE;

答案 1 :(得分:1)

我自己做了。

$this->load->database(); //connecting to default db
$this->db->query('SELECT * from user'); //user table in default db and no error

$this->load->database('second_db',FALSE,TRUE);//connecting to second db
$this->db->load('SELECT * from statistic'); //table exists in second db but getting error
//The same work if I comment the first two lines

唯一的变化是加载第二个数据库时需要传递两个额外的参数。 第一个FALSE - 不返回连接对象 第二个TRUE - 将活动记录更改为加载的数据库

答案 2 :(得分:0)

如果您使用

$this->load->database('second_db', TRUE);

你必须使用像

$db = $this->load->database('second_db', TRUE);

因为第二个参数true返回完整对象 现在$ db是您的db对象,您可以将$ db分配给类变量

$this->second_db = $this->load->database('second_db', TRUE);
$this->second_db->query();

答案 3 :(得分:0)

最后使用 Codeigniter 2.1.0

为我工作
$second_db = $this->load->database('second_group',TRUE,FALSE);

使组永久设置'pconnect'为:

$db['second_group']['pconnect'] = FALSE;