Php Codeigniter,呼叫多个数据库
我对codeigniter非常陌生,但我正在处理一个关于多个db的问题。数据库位于同一主机上 我已经更改了database.php文件,除了“default”之外,还包含了一个额外的组,新组名为“social”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'] = '
$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听到这个消息太好了!我很高兴你把它解决了,因为我想我不会猜到你也需要修复用户权限: