Php Codeigniter,呼叫多个数据库

Php Codeigniter,呼叫多个数据库,php,mysql,codeigniter,Php,Mysql,Codeigniter,我对codeigniter非常陌生,但我正在处理一个关于多个db的问题。数据库位于同一主机上 我已经更改了database.php文件,除了“default”之外,还包含了一个额外的组,新组名为“social” $active_group = 'default'; $active_group = 'social'; $active_record = TRUE; $db['default']['hostname'] = 'xxxx'; $db['default']['username'] = '

我对codeigniter非常陌生,但我正在处理一个关于多个db的问题。数据库位于同一主机上

我已经更改了database.php文件,除了“default”之外,还包含了一个额外的组,新组名为“social”

$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;
    }
}

我认为这应该奏效:

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;
    }
}

您使用的是哪一个CodeIgniter版本?我建议您查看这一行,尤其是$otherdb=$this->load->database'otherdb',TRUE;尝试过,但如果$userid为空{$rs=$this->load->database'social',TRUE;->selectid,username->fromcloud\u user->get;$userid=$rs->result;return$userid;}elseif是set$userid{$rs=$this->load->database'social',TRUE;->selectid,username->fromuser->where'id',$userid->get;$userid=$rs->result;返回$userid;}我看不懂,请用代码更新你的问题,以便更容易阅读。谢谢你哦,对不起,有道理…刚刚更新的问题尝试了你的建议,但是运气不好,甚至没有得到可用的答案error@NicolaiHolmøThomsen我建议联系专业开发人员。@NicolaiHolmøThomsen您可以尝试设置错误报告五十、 在您的页面顶部或查看CodeIgniter特定的错误处理,但我认为您连接到其他DB的初始问题可能已根据您提供的代码片段得到解决。我最终成功了…您的建议确实有所帮助,但我也没有正确的用户权限,因此在这之后更改为很好,一切都正常…非常感谢!@NicolaiHolmøThomsen听到这个消息太好了!我很高兴你把它解决了,因为我想我不会猜到你也需要修复用户权限: