问题
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