2

我已经在天涯海角搜索了这个解决方案,对于其他所有人来说,解决方法是在 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)

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

4

3 回答 3

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
}
于 2012-08-14T09:35:46.700 回答
1

num_rows 是一个函数。

if ($query->num_rows() > 0) {

}

所以你需要

if($q->num_rows() > 0) {
  return true;
}
于 2012-08-14T09:35:30.570 回答
0

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

宽慰

于 2012-08-14T12:24:27.887 回答