CodeIgniter – Llamada a una función de miembro select () en un objeto no objeto

Soy bastante nuevo en CodeIgniter. Este es mi código:

class User_model extends CI_Model { function validate_user() { $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($validate_user->num_rows == 1) { return TRUE; } } } 

Estoy recibiendo este error en mi archivo de modelo:

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

Actualmente estoy usando CodeIgniter versión 2.1.0. ¡Por favor, ayúdame!

Creo que tienes que cargar la biblioteca de la “base de datos”. La primera forma es incluir la “base de datos” en su aplicación / config / autoload.php

 $autoload['libraries'] = array('database', 'session'); 

o en tu constructor de clase:

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

Puede obtener más información aquí: http://ellislab.com/codeigniter/user_guide/database/connecting.html

Parece que no te apegas al patrón MVC. Debería pasar los datos desde view -> controller -> model.

En cuanto al envío de información a la base de datos, estoy bastante seguro de que CI maneja xss y filtra la entrada, pero nunca se puede estar seguro.

También asegúrese de que está cargando sus modelos en el archivo config / autoload.php o inicie el modelo en la función del controlador __construct ()

 < ?php class User extends CI_Controller { public __construct() { parent::__construct(); $this->load->model('User_model'); } } 

o

 $autoload['model'] = array('User_model'); 

Entonces, por ejemplo, en mi vista de inicio de sesión, quisiera que el CI creara los campos necesarios.

 < ?php echo form_open('admin'); echo form_label('Username:', 'username'); echo form_input('username', 'name'); echo form_label('Password:', 'password'); echo form_password('password'); echo form_submit('submit', 'Login', 'id="loginBtn"'); ?> echo form_close(); ?> 

Ahora en el controlador

 < ?php class User extends CI_Controller { public function index() { $this->load->model('User_model'); $result = $this ->user_model ->index( $this->input->post('username'), $this->input->post('password')); } } ?> 

Y el modelo

 < ?php class User_model extends CI_Model { function index($username, $password) { $q = $this ->db ->where('username', $username) ->where('password', md5($password)) ->limit(1) ->get('user'); if ($q->num_rows() > 0) { return $q->row(); } } } 

num_rows es una función, por lo tanto, debe agregar ()

 if($validate_user->num_rows() == 1) { return TRUE; } 

Además, ¿está llamando al constructor de la clase padre en el constructor

 class User_model extends CI_Model { function __construct() { parent::__construct(); } }