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

当我输入错误的电子邮件时,我在 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');   


   }

}

?>


一只甜甜圈
浏览 171回答 3
3回答

鸿蒙传说

您应该在$user_email=$row->email;根据您的标准记录是否存在之前检查,如果行不存在,那么您将收到该错误所以你应该检查如下$row=$que->row();if($row) {&nbsp; &nbsp;$user_email=$row->email;}

慕少森

你需要这样处理$query = $this->db->query("select password,email from users where email=".$email);if ($query->num_rows() > 0) {&nbsp; &nbsp; $row = $query->row();&nbsp; &nbsp; $user_email = $row->email;} else {&nbsp; &nbsp; $user_email = '';}//then your next if condition in which you are comparing two strings

临摹微笑

应用条件,因为在您的情况下,它可能无法从该电子邮件的表格中获得结果,if (isset($row)){注意: row方法返回单个结果行。如果您的查询有多于一行,则它只返回第一行。结果作为对象返回。这是一个使用示例:$que=$this->db->query("select password,email from users where email like '$email'");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$row = $que->row();if (isset($row)){&nbsp; &nbsp; $user_email = $row->email;&nbsp; &nbsp; $user_password = $row->password;}这是相同的简洁文档。
打开App,查看更多内容
随时随地看视频慕课网APP