Я довольно новичок в 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. Пожалуйста, помогите мне!
Я думаю, что вам нужно загрузить библиотеку «база данных». Первый способ – включить «базу данных» в ваше приложение / 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(); } }