2016-01-14 40 views
2

我對codeigniter很新,但處理有關多個數據庫的問題。這些數據庫位於同一主機上。Codeigniter,調用多個數據庫的

我已經改變了database.php中的文件,從「默認」新組預留有一個額外的組被稱爲「社會」

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

$db['default']['hostname'] = 'xxxx'; 
$db['default']['username'] = 'xxx'; 
$db['default']['password'] = 'xxxx'; 
$db['default']['database'] = 'mysql'; 
$db['default']['dbdriver'] = 'mysqli'; 
$db['default']['dbprefix'] = ''; 
$db['default']['pconnect'] = TRUE; 
$db['default']['db_debug'] = FALSE; 
$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; 

$db['social']['hostname'] = 'xxx'; 
$db['social']['username'] = 'xxx'; 
$db['social']['password'] = 'xxx'; 
$db['social']['database'] = 'social'; 
$db['social']['dbdriver'] = 'mysqli'; 
$db['social']['dbprefix'] = ''; 
$db['social']['pconnect'] = TRUE; 
$db['social']['db_debug'] = FALSE; 
$db['social']['cache_on'] = FALSE; 
$db['social']['cachedir'] = ''; 
$db['social']['char_set'] = 'utf8'; 
$db['social']['dbcollat'] = 'utf8_general_ci'; 
$db['social']['swap_pre'] = ''; 
$db['social']['autoinit'] = TRUE; 
$db['social']['stricton'] = FALSE; 

現在,在我的代碼調用DBS

public function __construct() 
{ 
    $dbgroup = !file_exists(".git") ? "default" : "development"; 
    $this->_time = microtime(true); 
    $this->_db =& DB($dbgroup); 

    $dbgroup = "social"; 
    $this->_time = microtime(true); 
    $this->_dbs =& DB($dbgroup); 

我做錯了什麼,爲什麼我不能使用_dbs從第二個數據庫獲取數據?請記住......在這裏完全編碼新手!這不是我的日常工作:)

更新! 按照stackoverflow.com/a/8269596中所述嘗試調用此函數中的db,但仍然無法使其工作。

public function getUsers($userid = NULL) 
{ 
    if (empty($userid)) { 
       $rs = $this->load->database('social', TRUE); 
     ->select("id, username") 
     ->from("user") 
     ->get(); 
     $userid = $rs->result(); 
    return $userid; 
    } 
    elseif (isset($userid)) { 
       $rs = $this->load->database('social', TRUE); 
     ->select("id, username") 
     ->from("user") 
     ->where('id', $userid) 
     ->get(); 
     $userid = $rs->result(); 
    return $userid; 
    } 
} 
+0

哪個笨版本您使用的? – MonkeyZeus

+0

我正在使用V. 2.1.3 –

+0

我建議看看http://stackoverflow.com/a/8269596,特別是這行'$ otherdb = $ this-> load-> database('otherdb',TRUE);' – MonkeyZeus

回答

0

我認爲這應該工作:

public function getUsers($userid = NULL) 
{ 
    $rs = $this->load->database('social', TRUE); 
    if (empty($userid)) { 
     $rs->select("id, username") 
     ->from("user") 
     ->get(); 
     $userid = $rs->result(); 
    return $userid; 
    } 
    elseif (isset($userid)) { 
     $rs->select("id, username") 
     ->from("user") 
     ->where('id', $userid) 
     ->get(); 
     $userid = $rs->result(); 
    return $userid; 
    } 
} 
+0

嘗試了您的建議,但沒有運氣,甚至沒有得到可用的錯誤 –

+0

@NicolaiHolmøThomsen我建議聯繫專業的開發人員。 – MonkeyZeus

+0

@NicolaiHolmøThomsen您可以嘗試在頁面頂部設置'error_reporting(E_ALL);'或查看CodeIgniter特定錯誤的http://stackoverflow.com/questions/7843406/codeigniter-how-to-catch-db-errors處理,但我認爲你連接到不同的數據庫的最初問題很可能已根據你提供的代碼片段解決。 – MonkeyZeus