CodeIgniter – вызов функции-члена select () для не-объекта

Я довольно новичок в CodeIgniter. Это мой код:

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

Я получаю эту ошибку в файле модели:

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

В настоящее время я использую CodeIgniter версии 2.1.0. Пожалуйста, помогите мне!

Related of "CodeIgniter – вызов функции-члена select () для не-объекта"

Я думаю, что вам нужно загрузить библиотеку «база данных». Первый способ – включить «базу данных» в ваше приложение / config / autoload.php

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

или в конструкторе класса:

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

Вы можете получить дополнительную информацию здесь: http://ellislab.com/codeigniter/user_guide/database/connecting.html

Похоже, что вы не придерживаетесь шаблона MVC. Вы должны передавать данные из вида -> controller -> model.

Что касается отправки информации в базу данных, я уверен, что CI обрабатывает входные данные xss и filter, но вы никогда не сможете быть уверенными.

Также убедитесь, что вы загружаете свои модели в файле config / autoload.php или инициируете модель в функции контроллера __construct ()

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

или

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

Так, например, в моем режиме входа в систему я хотел бы, чтобы CI создал необходимые поля.

 <?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(); ?> 

Теперь в контроллере

 <?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')); } } ?> 

И модель

 <?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 – это функция, поэтому вам нужно добавить ()

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

Кроме того, вы вызываете конструктор родительского класса в конструкторе

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