Php CodeIgniter-对非对象调用成员函数select()
我对CodeIgniter是个新手。这是我的代码:Php CodeIgniter-对非对象调用成员函数select(),php,codeigniter,Php,Codeigniter,我对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'
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。请帮帮我
num_rows
是一个函数,因此需要添加()
另外,您是否正在调用构造函数中的父类构造函数
class User_model extends CI_Model {
function __construct()
{
parent::__construct();
}
}
我认为您必须加载“数据库”库。第一种方法是在应用程序/config/autoload.php中包含“数据库”
$autoload['libraries'] = array('database', 'session');
或者在类构造函数中:
class User_model extends CI_Model {
public function __construct()
{
parent::__construct();
$this->load->database();
}
}
您可以在这里获得更多信息:看起来您没有坚持MVC模式。您应该从视图->控制器->模型传递数据 至于向数据库发送信息,我非常确定CI处理xss和过滤器输入,但您永远无法确定 还要确保在config/autoload.php文件中加载模型,或者在controller\uuu construct()函数中启动模型 例如,在我的登录视图中,我会让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();
?>
噢,db对象似乎没有初始化。你在调用构造函数中的父类构造函数吗?不。我没有在我的代码中调用任何构造函数。即使我放置了_construct()函数,错误仍然存在,表示“致命错误:在C:\AppServ\www\ci\application\models\user_model.php的第14行对非对象调用成员函数where()”问题已解决!我只是在autoload.php文件中添加了单词“database”$自动加载['libraries']=array('database');为了清楚起见,除非重写子类中的_construct()函数,否则将始终调用父构造函数。在这种情况下,需要显式调用父级的构造函数,父级::u construct();要更新我的答案,您可能应该使用sha256和salt+密码哈希,因为md5不再被视为最佳实践。在搜索此特定错误时,这是一个非常有用的线程,在搜索结果中显示得很高。请不要这么快哭了。
<?php
class User extends CI_Controller
{
public __construct()
{
parent::__construct();
$this->load->model('User_model');
}
}
$autoload['model'] = array('User_model');
<?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();
}
}
}