2011-08-04 53 views
1

我能夠連接到我的Linux機器上的用戶DSN(使用ODBC)。如何使用codeigniter連接到用戶DSN?

如何使用代碼點火器進行連接?

在我database.php中

我有默認的數據庫:

$active_group = 'default'; 
$active_record = TRUE; 

$db['default']['hostname'] = 'localhost'; 
$db['default']['username'] = 'user'; 
$db['default']['password'] = 'pass'; 
$db['default']['database'] = 'db_main'; 
$db['default']['dbdriver'] = 'mysql'; 
$db['default']['dbprefix'] = ''; 
$db['default']['pconnect'] = TRUE; 
$db['default']['db_debug'] = TRUE; 
$db['default']['cache_on'] = FALSE; 
$db['default']['cachedir'] = ''; 
$db['default']['char_set'] = 'utf8'; 
$db['default']['dbcollat'] = 'utf8_general_ci'; 
$db['default']['swap_pre'] = ''; 
$db['default']['autoinit'] = TRUE; 
$db['default']['stricton'] = FALSE; 

但是我還需要使用ODBC同時連接到另一個數據庫:

所以,我在我的控制器:

public function index() 
    { 

     $dsn = 'NZSQL://someuser:[email protected]/somedatabase'; 
     $this->load->database($dsn); 
     $this->db->query("SELECT * FROM Cust Limit 10"); 
     $result = $this->db->result(); 
    } 

我得到錯誤:

A Database Error Occurred

Error Number: 1146

Table 'db_main.Cust' doesn't exist

SELECT * FROM Cust Limit 10

Filename: /var/www/controllers/netezzatest.php

Line Number: 28

回答

3

對於要連接的每個數據庫,Code Igniter將要求您創建一個新的數據庫對象。在調用$ this-> load-> database()時,應該將每個DB完全構建在配置文件中,然後通過名稱(數組鍵)引用它們。

查看Connecting to Multiple Databases的具體細節。但是,基本上,你需要使用這個連接(創建每個數據庫的對象):

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

那麼這對每個運行查詢:

$DB1->query(); 
$DB1->result(); 

和:

$DB2->query(); 
$DB2->result(); 
1

連接到第二個數據庫時,您需要讓它返回對象,以便您可以使用它。作爲load->database的第二個參數傳遞true會返回一個db對象。

$dsn = 'NZSQL://someuser:[email protected]/somedatabase'; 
$dsnDB = $this->load->database($dsn, TRUE); 
$query = $dsnDB->query("SELECT * FROM Cust Limit 10"); 
$result = $query>result(); 

在這種情況下,$this->db是你的mysql數據庫,並$dsnDB是另一個。

相關問題