Fatal error: Call to a member function where() on a non-object codeigniter $query->num_rows()==1) [duplicate]

落爺英雄遲暮 提交于 2019-12-23 12:19:45

问题


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

I'm newbie with codeigniter and have some problems.

Error Message: Fatal error: Call to a member function where() on a non-object in C:\xampp\htdocs\moi\CI\application\models\model_users.php on line 12

My Model:

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;
    }

My Controller:

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;
    }
}

}

please for help


回答1:


See below URL

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

Try it

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:


$this->db seems not to be defined. Seems you dont have a property names $db within your Model.

Have you used: $this->load->database(); to initialize your database?

Try the following code:

class Model_users extends CI_Model {

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

Information
Example: http://maestric.com/doc/php/codeigniter_models
User Guide: http://ellislab.com/codeigniter/user_guide/database/examples.html




回答3:


Do you have your database on autoload? If not, you probably need to add this code to the constructor:

$this->load->database();



回答4:


The problem you have is not that much related to Codeigniter in specific nor to the database.

It is first of all a standard PHP error, for the general info please see

  • PHP Error Reference: Fatal error: Call to a member function ... on a non-object

In your cases - just forget Codeigniter for a moment - this means that $this does bot have any ->db or ->load member, lines of code that fail:

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

It's obvious that this needs further debugging. Why aren't those libraries loaded? Why isn't it even possible to load the database?

Well actually this requires further debugging. It makes no sense in my eyes that you ask in comments further on, the other users can only give as good answers as you provide good information in your question. But asking a question is always limited as well, sure.

Maybe first of all post the complete code of your model class. It might just be the model class itself already screws it. Something a fresh pair of eyes here is faster to spot.

But there is no guarantee for that, just a possibility. You can break that also in other places. These are hard to reach, so you best do that using a step-debugger like Xdebug in your development environment.



来源:https://stackoverflow.com/questions/12847242/fatal-error-call-to-a-member-function-where-on-a-non-object-codeigniter-quer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!