2016-01-14 25 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