致命错误:调用非对象代码点火器 $query->num_rows()==1) 上的成员函数 where() [重复]

Posted

技术标签:

【中文标题】致命错误:调用非对象代码点火器 $query->num_rows()==1) 上的成员函数 where() [重复]【英文标题】:Fatal error: Call to a member function where() on a non-object codeigniter $query->num_rows()==1) [duplicate] 【发布时间】:2012-10-02 13:42:22 【问题描述】:

可能重复: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;
    



请帮忙

【问题讨论】:

显然方法 where 被调用在不是对象的东西上。你能向用户展示用户超类吗? 但在我的配置文件中定义 我不知道代码点火器,但错误很明显。 $this->db 不是对象。如果您认为如果您从对象的超类请求 db 字段,那么您做错了。 我该如何解决这个问题? 尝试将username_check() 中的$this->load->model('model_users'); 行更改为$this->load->model('model_users', '', TRUE); 以自动连接到您的数据库 【参考方案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;
      





【讨论】:

$autoload['libraries'] = array('database'); -->application/config/autoload.php 我已经更新了我的答案,请看一下。 致命错误:在 C:\xampp\htdocs\moi\CI\application\models\model_users.php 第 7 行调用非对象上的成员函数 database() 没有 // $this->load->database();我收到了这个致命错误:在第 13 行的 C:\xampp\htdocs\moi\CI\application\models\model_users.php 中的非对象上调用成员函数 select() 查看此网址***.com/questions/8322124/…【参考方案2】:

$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

【讨论】:

好的,我已经添加了 $this->load->database();在构造函数中,但现在是第 7 行的错误。 你能更新你当前状态的文件吗(哪一行是第 7 行?) 第 7 行正好是 $this->load->database(); <?php class Model_users extends CI_Model function __construct() parent::__construct(); $this->load->database(); 你设置$autoload[‘libraries’] = array(‘database’);了吗?【参考方案3】:

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

$this->load->database();

【讨论】:

我收到了类似的错误消息:致命错误:调用 C:\xampp\htdocs\moi\CI\application\models\model_users.php 中非对象上的成员函数 database()第 7 行 您不是偶然移动或重命名了 Codeigniter 系统文件夹吗?听起来确实没有一个 CI 核心加载正确。【参考方案4】:

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

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

PHP Error Reference: Fatal error: Call to a member function ... on a non-object

在您的情况下 - 暂时忘记 Codeigniter - 这意味着 $this 机器人有任何 ->db->load 成员,失败的代码行:

$this->db->where('email', $this->input->post('email'));
$this->load->database();

很明显,这需要进一步调试。为什么没有加载这些库?为什么连数据库都加载不出来?

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

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

但这并不能保证,只是一种可能性。你也可以在其他地方打破它。这些很难达到,因此您最好在开发环境中使用像 Xdebug 这样的步进调试器。

【讨论】:

以上是关于致命错误:调用非对象代码点火器 $query->num_rows()==1) 上的成员函数 where() [重复]的主要内容,如果未能解决你的问题,请参考以下文章

代码点火器:在非对象上调用成员函数 num_rows()

致命错误:在非对象上调用成员函数 fetch_array()

PDO 致命错误:在非对象上调用成员函数 prepare()

致命错误:在非对象上调用成员函数 fetch()?

致命错误:在第 7 行调用非对象上的成员函数 prepare()。我想不通,为啥会出现此错误?

Magento,致命错误,“在非对象上调用 ... getAllOptions() ... Core\Model\Cache.php”