Php codeigniter登录系统中出现错误
所以我犯了这个错误 致命错误:在第15行的C:\xampp\htdocs\application\models\user.php中对非对象调用成员函数num_rows() 看法Php codeigniter登录系统中出现错误,php,codeigniter,login,Php,Codeigniter,Login,所以我犯了这个错误 致命错误:在第15行的C:\xampp\htdocs\application\models\user.php中对非对象调用成员函数num_rows() 看法 用户名: 密码: 控制器登录: <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Login extends CI_Controller { function __construct() {
用户名:
密码:
控制器登录:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Login extends CI_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$this->load->helper(array('form'));
$this->load->view('header');
$this->load->view('login_view');
$this->load->view('footer');
}
}
?>
控制器验证
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class VerifyLogin extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->model('user','',TRUE);
}
function index()
{
//This method will have the credentials validation
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');
if($this->form_validation->run() == FALSE)
{
//Field validation failed. User redirected to login page
$this->load->view('login_view');
}
else
{
//Go to private area
redirect('home', 'refresh');
}
}
function check_database($password)
{
//Field validation succeeded. Validate against database
$username = $this->input->post('username');
//query the database
$result = $this->user->login($username, $password);
if($result)
{
$sess_array = array();
foreach($result as $row)
{
$sess_array = array(
'id' => $row->id,
'username' => $row->username
);
$this->session->set_userdata('logged_in', $sess_array);
}
return TRUE;
}
else
{
$this->form_validation->set_message('check_database', 'Invalid username or password');
return false;
}
}
}
?>
模型
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
Class User extends CI_Model
{
function login($username, $password)
{
$this -> db -> select('gebruiker_id, gebruikersnaam, wachtwoord');
$this -> db -> from('gebruikers');
$this -> db -> where('gebruikersnaam', $username);
$this -> db -> where('wachtwoord', MD5($password));
$this -> db -> limit(1);
$query = $this -> db -> get();
if($query -> num_rows() == 1)
{
return $query->result();
}
else
{
return false;
}
}
}
?>
我试着查找不同问题的答案,但给出的答案无法解决我的问题
我在不同的网站上浏览过,我就是找不到答案
我是codeigniter的新手,它证明了当您让代码工作时非常方便而不是这个
if($query -> num_rows() == 1)
写这个
if($query->num_rows()==1)
检查它是否工作请检查您是否在配置文件夹的自动加载文件中声明了数据库类($autoload['libraries]=array('database');),也可以使用var_dump()检查输出 编辑 查询设置为FALSE而不是给出结果意味着它失败。我认为你的数据库连接根本不起作用。因此,您可以检查并尝试使用DSN进行连接
参考-我认为解决方法对您来说是很好的。检查结果是否为空,而不是检查行数 尝试在查询中添加->result(),它工作正常,如:
$dataFromBase = $this->db->get_where($this::DB_TABLE, MyWhereArguments)->result(); // or any query you want.
通过这种方式,我已经有了结果格式,对象格式,然后我检查它是否为null,比如:
if ($dataFromBase != null) {
// handle your result
}
但还是有点奇怪,你的num_rows()不起作用,我做了一些测试,对我来说效果很好。如果你是编写igniter的新手,我建议你去看看Laravel。CI已死亡。请尝试删除->之间的空格,其他人尝试使用$query->num\u rows()现在得到了什么错误?删除$query->num_rows()上方箭头之间的所有空格。相同错误。删除所有空格。致命错误:在C:\xampp\htdocs\application\models\user.php的第15行write var_dump($query->num_rows())的非对象上调用成员函数num_rows();告诉我o/p,而不是$this->db->where('gebruikersnaam',$username)$这->数据库->其中('wachtwoord',MD5($password));写下这个$where=array('gebruikersnaam'=>username,'wachtwoord'=>MD5($password))$此->数据库->何处($where);它可能会取代%query->。。。或者在下一行?$query=$this->db->get()下面;写入变量dum($query->num_rows());请参阅我以前编辑的commentvar_dump($query)给出的bool(false)$自动加载['libraries']=array('database');在自动加载文件中
if ($dataFromBase != null) {
// handle your result
}