为了账号安全,请及时绑定邮箱和手机立即绑定

试图获取非对象的属性“电子邮件”

试图获取非对象的属性“电子邮件”

PHP
一只甜甜圈 2021-06-30 21:30:17
当我输入错误的电子邮件时,我在 Codeigniter 中编写的代码出现以下错误。遇到 PHP 错误 严重性:注意消息:尝试获取非对象的属性“电子邮件”文件名:controllers/forms.php行号:26回溯:文件:E:\Software\XAMPP\xampp\htdocs\ciauth\application\controllers\forms.php 行:26 功能:_error_handler文件:E:\Software\XAMPP\xampp\htdocs\ciauth\index.php 行:315 功能:require_once下面是控制器<?php class Forms extends CI_Controller {    public function __construct()    {        parent::__construct();        $this->load->database();        $this->load->library('session');        $this->load->helper('url');        $this->load->model('user_model', 'auth');    }   public function forgot_pass()    {        if($this->input->post('forgot_pass'))        {            $email=$this->input->post('email');            $this->load->model('user_model', 'auth');            $this->load->library('form_validation');            $this->form_validation->set_rules('email', 'E-mail', 'required');            if ($this->form_validation->run() == TRUE) {            $que=$this->db->query("select password,email from users where email='$email'");                     $row=$que->row();            $user_email=$row->email;            if((!strcmp($email, $user_email)))            {                $pass=$row->password;                $to = $user_email;                $subject = "Password";                $txt = "Your password is $pass .";                $headers = "From: user@testdomain.com" . "\r\n" . "CC: hamza_zon@outlook.com ";                mail($to,$subject,$txt,$headers);                $this->load->view('user/header');                $this->load->view('user/confirm');                $this->load->view('user/footer');                }            else{            $data['error']="Invalid Email ID !";            }        }            else{                $data['error']="Email ID is required !";            }    }            $this->load->view('user/header');               $this->load->view('user/forgot_pass',@$data);            $this->load->view('user/footer');      }}?>
查看完整描述

3 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

您应该在$user_email=$row->email;根据您的标准记录是否存在之前检查,如果行不存在,那么您将收到该错误


所以你应该检查如下


$row=$que->row();

if($row) {


   $user_email=$row->email;

}


查看完整回答
反对 回复 2021-07-09
?
慕少森

TA贡献2019条经验 获得超9个赞

你需要这样处理


$query = $this->db->query("select password,email from users where email=".$email);

if ($query->num_rows() > 0) {

    $row = $query->row();

    $user_email = $row->email;

} else {

    $user_email = '';

}

//then your next if condition in which you are comparing two strings


查看完整回答
反对 回复 2021-07-09
?
临摹微笑

TA贡献1982条经验 获得超2个赞

应用条件,因为在您的情况下,它可能无法从该电子邮件的表格中获得结果,


if (isset($row))

{

注意: row方法返回单个结果行。如果您的查询有多于一行,则它只返回第一行。结果作为对象返回。这是一个使用示例:


$que=$this->db->query("select password,email from users where email like '$email'");         


$row = $que->row();


if (isset($row))

{

    $user_email = $row->email;

    $user_password = $row->password;

}

这是相同的简洁文档。


查看完整回答
反对 回复 2021-07-09
  • 3 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信