【发布时间】:2012-03-06 04:45:12
【问题描述】:
新的堆栈溢出(和codeigniter!)我在我的第一个项目中遇到了这个问题,自然......我确信这是我的一个愚蠢的错误,但我一直在研究并尝试在过去的几个小时里弄明白了,我猫似乎弄明白了......
我已自动加载数据库库,但每次尝试使用模型中的方法时都会出现此错误:
“致命错误:在第 13 行的 application\models\user_model.php 中的非对象上调用成员函数 where()”
这是我的用户控制器方法,由我的登录表单视图中的表单操作调用:
function login() {
$this->load->model('user_model');
$query = $this->user_model->validate();
if ($query)
{
$data = array(
'username' => $this->input->post('username'),
'is_logged_in' => true
);
$this->session->set_userdata($data);
redirect('members');
}
else
{
$this->load->view('user');
}
} // end login function
这是我的模型:
<?php
class User_model extends CI_Model {
function __construct() {
parent::__construct();
}
// -------------------------------------------------------------------------------
// validate(): query db for user/pass and return true or false
function validate() {
$this->db->where('username', $this->input->post('username'));
$this->db->where('password', sha1($this->input->post('password')));
$query = $this->db->get('users');
if ($query->num_rows() > 0)
{
return true;
}
} // end validate function
// -------------------------------------------------------------------------------
function check()
{
$dbo = $this->load->database('default',TRUE);
$query = $this->$dbo->get('users');
echo $query->num_rows();
}
} // end user_model class
当我尝试调试问题时,我将 db 方法添加到控制器并且它们运行良好......在我的模型中使用它们时,无论出于何种原因,它们都不想工作并抛出我提到的致命错误。感谢你们可以为我提供的任何帮助。
提前致谢!
(使用 codeigniter 2.1)
编辑:
只是为了更清楚一点,当我将 validate 方法(从我的模型)添加到我的控制器时,我没有收到任何错误,并且一切正常......但是当将它留在模型中并调用它时从控制器我得到了致命错误
【问题讨论】:
-
您确定已加载数据库库吗?要自动加载库,您需要编辑
application/config/autoload.php并将需要自动加载的内容添加到相应的数组中。 -
Positive... 不知道是什么,但我做了一些搜索,发现其他人也有同样的问题。使用完全相同的代码和文件重新安装 CodeIgniter,问题消失了……奇怪……CodeIgniter 会话类也有问题,不得不切换它以使会话为我工作。不用说,拔了几天头发,我终于进步了:)
标签: php codeigniter activerecord