【问题标题】:Codeigniter Multiple Database connectionsCodeigniter 多个数据库连接
【发布时间】:2011-10-19 20:55:12
【问题描述】:

我正在深入研究多个数据库的使用。根据codeigniter用户指南。要连接到其他数据库,请使用以下命令

$db2 = $this->load->database('second');

然后进行交互使用,

$db2->get('second_table');

我收到一个对非对象上的成员函数“where()”的致命错误调用。

下面一行

$db2->where('field1', $data['item']);

也为

$db2->get('second_table');

我在哪里做错了?

感谢您的帮助。

【问题讨论】:

标签: php database codeigniter activerecord


【解决方案1】:

为了返回数据库对象,您需要传递一个 TRUE 作为第二个参数:

$db2 = $this->load->database('second', TRUE);

有关详细信息,请参阅数据库类上的 manual。

还要确保您已在 application/config/database.php 中加载了该数据库的配置

$db['default']['hostname'] = 'localhost';
//.........

$db['second']['hostname'] = 'localhost';
//..........

【讨论】:

  • 是的,漏掉了 TRUE,duh :/ 谢谢!
【解决方案2】:

在 config/database.php 中

/

* DB1 */
$active_group = "forum";
$active_record = TRUE;

$db['DB1']['hostname'] = "xxxxx";
$db['DB1']['username'] = "xxxxx";
$db['DB1']['password'] = "xxxxx";
$db['DB1']['database'] = "xxxxx";
and other configs....

/* DB2 */

$db['DB2']['hostname'] = "xxxxx";
$db['DB2']['username'] = "xxxxx";
$db['DB2']['password'] = "xxxxx";
$db['DB2']['database'] = "xxxxx";
$db['DB2']['dbdriver'] = "mysql";
$db['DB2']['dbprefix'] = "";
and so on...

你可以使用数据库

$this->DB1 = $this->CI->load->database('DB1', TRUE);
$this->DB2 = $this->CI->load->database('DB2', TRUE);  

【讨论】:

  • 另一个在模型中初始化..这个可以在库中使用,如果你想做一个:) jsut另一种使用方式..注意$this->CI这意味着我正在获取 CI 的实例,以便我可以将它用作帮助程序或库..
猜你喜欢
  • 2012-01-06
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
  • 2011-10-03
  • 1970-01-01
相关资源
最近更新 更多