2011-10-19 95 views
2

我正在潛入多個數據庫使用情況。根據codeigniter用戶指南。要連接到其他數據庫使用使用下列Codeigniter多個數據庫連接

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

然後進行交互使用,

$db2->get('second_table'); 

我上非接收致命錯誤呼叫到一個成員函數「其中()」目的。

以下行

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

,也爲

$db2->get('second_table'); 

我在哪裏這個問題呢?

感謝您的任何幫助。

+2

你確定$ db2正在設置嗎? CI文檔說你應該將第二個參數設置爲'true'來返回數據庫對象。 http://codeigniter.com/user_guide/database/connecting.html –

回答

9

爲了返回數據庫對象,你需要傳遞一個真正的第二paramenter:

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

manual數據庫類的更多信息。

同時也要確保您已經加載的配置爲應用程序,數據庫/配置/ database.php中

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

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

是的,遺漏了TRUE,杜:/謝謝! – Erocanti

0

在配置/ 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); 
+0

這與已經存在的答案有何不同? – Mischa

+0

另一個在模型中初始化.. 這一個可以在庫中使用,如果你想使一個:) jsut另一種方式如何使用..注意$ this-> CI它意味着我得到CI的實例,以便我可以將它用作幫助程序或庫。 –