致命错误:调用非对象代码点火器 $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() [重复]的主要内容,如果未能解决你的问题,请参考以下文章
致命错误:在非对象上调用成员函数 fetch_array()
PDO 致命错误:在非对象上调用成员函数 prepare()
致命错误:在第 7 行调用非对象上的成员函数 prepare()。我想不通,为啥会出现此错误?
Magento,致命错误,“在非对象上调用 ... getAllOptions() ... Core\Model\Cache.php”