可能重复:
CodeIgniter - Call to a member function select() on a non-object
我是codeigniter的新手并且遇到了一些问题。
错误消息: 致命错误:在C:\ xampp \ htdocs \ moi \ CI \ application \ models \ model_users中的非对象上调用成员函数where()。第12行的php
我的模特:
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;
}
我的控制器:
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;
}
}
}
请求帮助
答案 0 :(得分:1)
$this->db
。您的模型中似乎没有属性名称$db
。
您是否使用过:$this->load->database();
初始化数据库?
请尝试以下代码:
class Model_users extends CI_Model {
function __construct(){
parent::__construct();
$this->load->database();
}
信息
示例:http://maestric.com/doc/php/codeigniter_models
用户指南:http://ellislab.com/codeigniter/user_guide/database/examples.html
答案 1 :(得分:1)
请参阅以下网址
CodeIgniter - Call to a member function select() on a non-object
试一试
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 :(得分:0)
你有自动加载数据库吗?如果没有,您可能需要将此代码添加到构造函数中:
$this->load->database();
答案 3 :(得分:0)
您遇到的问题与特定的Codeigniter和数据库没有多大关系。
首先是标准PHP错误,一般信息请参阅
在您的情况下 - 暂时忘记Codeigniter - 这意味着$this
机器人有任何->db
或->load
成员,代码行失败:
$this->db->where('email', $this->input->post('email'));
$this->load->database();
很明显,这需要进一步调试。为什么不加载这些库?为什么甚至不能加载数据库?
实际上这需要进一步调试。在我看来,你在评论中进一步提出意见是没有意义的,其他用户只能提供与你在问题中提供好信息一样好的答案。但问问题总是有限的,当然。
也许首先发布模型类的完整代码。它可能只是模型类本身已经拧紧它。这里有一双新鲜的眼睛更快被发现。
但不能保证这一点,只是一种可能性。你也可以在其他地方打破它。这些很难达到,所以最好在开发环境中使用像Xdebug这样的步调试器。