codeigniter调用非对象上的成员函数row()

时间:2012-08-14 09:09:20

标签: codeigniter

我搜索了地球的两端并找回了这个解决方案,对于其他人来说,修复是在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)

是问题,说我试图引用非对象的属性

3 个答案:

答案 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)

已解决 - 我没有将用户分配到数据库,因此无法访问它。

救济