2012-04-04 76 views
0

我需要連接到另一個MySQL數據庫,我做以下如何創建與笨

$dsn = "{$dbdriver}://$vars[username]:$vars[password]@$vars[hostname]/$vars[database]"; 

    $db2 = $this->EE->load->database($dsn, true); 
    $res = $db2->from('categories')->get()->result_array(); 

另一個數據庫連接,但我得到錯誤信息Fatal error: Call to a member function result_array() on a non-object

也就是說第三方腳本,數據庫連接已經取得早。然後,該腳本應該連接到另一個分貝,但第一分貝連接已經創建

$dsn包含正確的數據。爲什麼我得到這個錯誤? 謝謝

+0

您可以輸出'$ dsn'嗎?也許有'@'或一些特殊的字符在密碼導致問題 – safarov 2012-04-04 15:50:43

+0

@safarov,我有相同的連接問題,當我在密碼中'@'。如何克服這一點? – 2015-04-09 05:23:09

回答

0

我已經想通了。該查詢應該包含額外的參數db_debug=1所以dsn字符串應該看起來像

$dsn = "mysql://$vars[username]:$vars[password]@$vars[hostname]/$vars[database]?db_debug=1"; 
0

也寫在confid/database.php第二數據庫的參數。

$db['second_db']['hostname'] = 'localhost'; 
$db['second_db']['username'] = 'foo'; 
... 

而且

$db2 = $this->EE->load->database('second_db', true); 
+0

我在腳本中隨時取出mysql用戶名和密碼。所以我不能設置配置文件 – 2012-04-04 15:40:33

0

如果你看過CodeIgniter用戶指南,你會很容易找到答案。標題爲

連接到多個數據庫

http://ellislab.com/codeigniter/user-guide/database/connecting.html

+0

,如果你看到我的代碼我完全按照手冊,我確實得到連接,但我不能得到結果,因爲它說致命錯誤:調用成員函數result_array() – 2012-04-11 14:20:15