我有一个来自另一个数据库的现有用户数据库,想要在我的新网站上使用它,使用codeigniter,新数据库都在mysql上运行,我配置了我的database.php,如下所示,并配置另一个数据库连接。
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => 'root',
'database' => 'new_database',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
$db['otherdb'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => 'root',
'database' => 'members_database',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
现在我正在尝试查询Users_model.php上的用户名和密码,我的功能是这样的。
public function login($username, $password){
$otherdb = $this->load->database('otherdb', TRUE);
$this->$otherdb->where('user_name', $username);
$this->$otherdb->where('user_pass', $password);
$result = $this->$otherdb->get('members');
if($result->num_rows() == 1){
return $result->row(0)->ID;
}else{
return false;
}
}
但是下面有一个错误,我是codeigniter的新手,不知道这是否是从另一个数据库查询的正确方法,任何建议都会有所帮助!提前谢谢!
类CI_DB_mysqli_driver的对象无法转换为字符串
答案 0 :(得分:1)
改变这个 $ otherdb = $ this-> load-> database(' otherdb',TRUE); 至 $ this-> otherdb = $ this-> load-> database(' otherdb',TRUE);
它会起作用。
答案 1 :(得分:0)
比较,致电时出错
$result = $this->$otherdb->get('members');
$this
存在错误-您必须这样做:
$result = $otherdb->get('members');
祝你好运。
PS:我也有类似的错误
答案 2 :(得分:-2)
将此$ this-> $ otherdb更改为$ otherdb-> where,将$ otherdb->更改为不包含“ $ this->”,因为您正在处理“ otherdb” ...