Php 致命错误:对非对象codeigniter$query调用成员函数where()->;num_rows()=1)

Php 致命错误:对非对象codeigniter$query调用成员函数where()->;num_rows()=1),php,mysql,database,codeigniter,Php,Mysql,Database,Codeigniter,可能重复: 我是codeigniter的新手,有一些问题 错误消息:致命错误:在C:\xampp\htdocs\moi\CI\application\models\model_users.php第12行的非对象上调用成员函数where() 我的模型: class Model_users extends CI_Model { function __construct(){ parent::__construct(); } public function can_log_in() {

可能重复:

我是codeigniter的新手,有一些问题


错误消息:致命错误:在C:\xampp\htdocs\moi\CI\application\models\model_users.php第12行的非对象上调用成员函数where()

我的模型:

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

}

请寻求帮助

您的数据库是否处于自动加载状态?如果没有,您可能需要将以下代码添加到构造函数:

$this->load->database();

$this->db
似乎没有定义。您的模型中似乎没有属性名称
$db

您是否使用过:
$this->load->database()初始化数据库

请尝试以下代码:

class Model_users extends CI_Model {

    function __construct(){
        parent::__construct();
        $this->load->database();
    }
信息
示例:

用户指南:

请参见下面的URL

试试看

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


}

}

您遇到的问题与Codeigniter没有太大关系,也与数据库没有太大关系

这首先是一个标准的PHP错误,有关一般信息,请参见

在您的情况下-暂时忘记Codeigniter-这意味着,
$this
bot是否有任何
->db
->加载
成员,失败的代码行:

$this->db->where('email', $this->input->post('email'));
$this->load->database();
很明显,这需要进一步调试。为什么那些库没有加载?为什么甚至不能加载数据库

实际上这需要进一步调试。在我看来,你在评论中进一步提问是没有意义的,其他用户只能给出与你在问题中提供好信息一样好的答案。当然,提问也总是有限的

也许首先发布模型类的完整代码。它可能只是模型类本身已经把它搞糟了。一双新鲜的眼睛在这里能更快地发现一些东西


但这并不能保证,只是一种可能性。你也可以在其他地方打破它。这些工具很难访问,因此您最好在开发环境中使用诸如Xdebug之类的step调试器来实现这一点。

显然,方法
,其中对非对象的对象调用了
。您可以向用户显示用户超类吗?但它是在我的配置文件中定义的。我不知道CodeIgniter,但错误很明显<代码>$this->db
不是对象。如果您认为您从对象的超类请求db字段,那么您就做错了。如何处理此问题?尝试更改行
$this->load->model('model_users')username\u check()
中编码>到
$this->load->model('model\u users','',TRUE)
自动连接到数据库OK我添加了$this->load->database();在构造函数中,但现在是第7行的错误。您可以在当前状态下更新文件吗(第7行是第7行?)第7行正好是$this->load->database()
是否已设置
$autoload['libraries']=array('database')
$autoload['libraries']=array('database')-->application/config/autoload.phpi已更新我的答案请查看。致命错误:在C:\xampp\htdocs\moi\CI\application\models\model_users.php第7行的非对象上调用成员函数database(),而不使用/$this->load->database();我得到了这个致命错误:在C:\xampp\htdocs\moi\CI\application\models\model\u users.php的第13行对非对象调用成员函数select()。看到这个URL我得到了类似的错误消息:致命错误:调用成员函数数据库()在第7行C:\xampp\htdocs\moi\CI\application\models\model\u users.php中的非对象上,您没有偶然移动或重命名Codeigniter系统文件夹,是吗?听起来好像没有一个CI核心加载正确。