致命错误:调用成员函数,其中()在非对象codeigniter $ query-> num_rows()== 1)

时间:2012-10-11 19:40:52

标签: php mysql database codeigniter

  

可能重复:
  CodeIgniter - Call to a member function select() on a non-object

我是codeigniter的新手并且遇到了一些问题。

错误消息: 致命错误:在C:\ xampp \ htdocs \ moi \ CI \ application \ models \ model_users中的非对象上调用成员函数where()。第12行的php

我的模特:

class Model_users extends CI_Model {

 function __construct(){
    parent::__construct();
}

public function can_log_in() {


    $this->db->where('email', $this->input->post('email'));
    $this->db->where('pass', md5($this->input->post('password')));
    $query = $this->db->get('users');

    if ($query->num_rows()==1) {
        return TRUE;
    } else {
        return FALSE;
    }

我的控制器:

class Main extends CI_Controller {

public function index() {
    $this->login();
}

//Auslagern der Funktionen
public function login() {
    $this->load->view('login');
}

public function login_validation() {

    $this->load->library('form_validation');

    $this->form_validation->set_rules('email', 'email', 'required|valid_email|xss_clean|callback_username_check');
    $this->form_validation->set_rules('password', 'password', 'required|md5');

    if ($this->form_validation->run()) {
        redirect('main/members');
    } else {
        $this->load->view('login');
    }
}

public function username_check() {
    $this->load->library('form_validation');
    $this->load->model('model_users');
    if ($this->model_users->can_log_in()) {
        return TRUE;
    } else {
        $this->form_validation->set_message('username_check', 'incorect User or Passwort.');
        return FALSE;
    }
}

}

请求帮助

4 个答案:

答案 0 :(得分:1)

似乎没有定义

$this->db。您的模型中似乎没有属性名称$db

您是否使用过:$this->load->database();初始化数据库?

请尝试以下代码:

class Model_users extends CI_Model {

    function __construct(){
        parent::__construct();
        $this->load->database();
    }

信息
示例:http://maestric.com/doc/php/codeigniter_models
用户指南:http://ellislab.com/codeigniter/user_guide/database/examples.html

答案 1 :(得分:1)

请参阅以下网址

CodeIgniter - Call to a member function select() on a non-object

试一试

class User_model extends CI_Model { 

     public function __construct() 
     {
           parent::__construct(); 
           $this->load->database();
     }

     public function can_log_in() {


        $this->db->select('*');
        $this->db->from('user');
        $this->db->where('username', $this->input->post('username'));
        $this->db->where('password', md5($this->input->post('password')));
        $validate_user = $this->db->get();

       if ($query->num_rows()==1) {
         return TRUE;
       } else {
         return FALSE;
      }


}

}

答案 2 :(得分:0)

你有自动加载数据库吗?如果没有,您可能需要将此代码添加到构造函数中:

$this->load->database();

答案 3 :(得分:0)

您遇到的问题与特定的Codeigniter和数据库没有多大关系。

首先是标准PHP错误,一般信息请参阅

在您的情况下 - 暂时忘记Codeigniter - 这意味着$this机器人有任何->db->load成员,代码行失败:

$this->db->where('email', $this->input->post('email'));
$this->load->database();

很明显,这需要进一步调试。为什么不加载这些库?为什么甚至不能加载数据库?

实际上这需要进一步调试。在我看来,你在评论中进一步提出意见是没有意义的,其他用户只能提供与你在问题中提供好信息一样好的答案。但问问题总是有限的,当然。

也许首先发布模型类的完整代码。它可能只是模型类本身已经拧紧它。这里有一双新鲜的眼睛更快被发现。

但不能保证这一点,只是一种可能性。你也可以在其他地方打破它。这些很难达到,所以最好在开发环境中使用像Xdebug这样的步调试器。