【问题标题】:Email already exists in database Codeigniter电子邮件已存在于数据库 Codeigniter 中
【发布时间】:2016-07-17 11:53:18
【问题描述】:

嘿 :) 所以我正在尝试检查用户是否已经使用他们的电子邮件地址进行了注册。电子邮件是数据库中的唯一字段。我遇到的问题是当我检查它时,(如果电子邮件存在于表中,它将返回 false 并将一条消息发送给用户),即使输入的电子邮件不存在,num_rows() 也总是返回 false桌子;

我不知道帖子是否有问题,但是如果我将电子邮件部分注释掉并注册,它会起作用,如果电子邮件是重复的,则会显示 1062 错误。

模型函数 checkEmail()

$email_address = $this->input->post('email');
    $this->db->where('email', $email_address);
    $result = $this->db->get('user');

    if($result->num_rows() > 0){
        /*
         * the email already exists
         * */
        return false;
    }

和控制器:

$checkEmail = $this->f_model->checkEmail();

    if(!$checkEmail){
        /*
         * if email exists
         * */
        $msg = '<font color=red>Email already registered.</font><br />';
        $this->register($msg);
    }
    else {

        $interest = $this->f_model->enter_register_details_01();
        if(!$interest) {

            $msg = '<font color=red>Password and Confirm Password do not match.</font><br />';
            $this->register($msg);
        }
        else {
            $data['msg'] = $msg;
            $this->load->view("registration_view_02", array('interest' => $interest,
                'message' => $data));
        }

    }

即使表格是空的,也会出现“电子邮件已注册”的消息

感谢您的帮助。

【问题讨论】:

  • 如果 num_rows
  • 在 if 条件 else return true 之后将此行添加到 checkEmail() 函数中
  • 在控制器中尝试var_dump( $checkEmail ),查看检查结果,可能有问题
  • 谢谢大家,我错过了 return true;

标签: php mysql codeigniter email


【解决方案1】:

checkEmail()函数中添加一个else语句

$email_address = $this->input->post('email');
$this->db->where('email', $email_address);
$result = $this->db->get('user');

if($result->num_rows() > 0){
    /*
     * the email already exists
     *
    */
    return false;
}else{
    return true;
}

【讨论】:

    猜你喜欢
    • 2014-05-10
    • 2019-09-17
    • 2020-03-17
    • 2015-05-06
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多