我搜索了地球的两端并找回了这个解决方案,对于其他人来说,修复是在autoload.php中自动加载数据库类。但是,我已经这样做了,所以我不知道还有什么地方可以用它。
控制器:
class Login extends CI_Controller{
function validate_credentials(){
$this->load->model('membership_model');
// call the member function from membership_model.php
$q = $this->membership_model->validate();
if($q){
// user info is valid
$data = array(
'username' => $this->input->post('username'),
'is_logged_in' => true
);
$this->session->set_userdata($data);
redirect('site/members_area');
}else{
$this->index();
}
}
}
型号:
class Membership_model extends CI_Model{
function validate(){
// this method is called from the login.php controller
$this->db->where('username', $this->input->post('username'));
$this->db->where('password', md5($this->input->post('password')));
$q = $this->db->get('members');
if($q->num_rows == 1){
return true;
}
return false;
}
}
对此有任何帮助,我将围绕这个
转圈我的下一个想法是php.ini需要在我的主机服务器上配置,以加载mysql模块 - 但我会对此感到非常惊讶?
只是为了澄清 - 这句话:
if($q->num_rows)
是问题,说我试图引用非对象的属性
答案 0 :(得分:2)
实际上
if($q->num_rows)
应该是
if($q->num_rows()) // It returns the number of rows returned by the query.
所以你可以使用
if($q->num_rows()) // In this case it'll be evaluated true if rows grater than 0
{
// code when rows returned
}
答案 1 :(得分:1)
num_rows是一个函数。
if ($query->num_rows() > 0) {
}
所以你需要
if($q->num_rows() > 0) {
return true;
}
答案 2 :(得分:0)
已解决 - 我没有将用户分配到数据库,因此无法访问它。
救济