检查数据是否已存在

时间:2016-03-04 07:06:09

标签: php mysql codeigniter

我想检查电子邮件,身份证号码或护照号码是否已经注册,我使用此查询:

$qryc = "SELECT user_id FROM users WHERE login='".$this->input->post('email')."' 
        OR ic_number='".$this->input->post('ic_number')."' OR passport_number='".$this->input->post('passport_number')."'";
        $sqlc = mysql_query($qryc);
        $rsc = mysql_fetch_array($sqlc);
        $rowc = mysql_num_rows($sqlc);
        if($rowc > 0){

        redirect('registration/view_error/'.$rsc['user_id']);
        }else{
        $qryuser = "INSERT INTO users (login,password,user_type,ic_number,passport_number,user_application_status,verification_code)
                    VALUES ('".$email."',
                            '".$password_hashed."',
                            '2',
                            '".$ic_number."',
                            '".$passport_number."',
                            '0',
                            '".$verification_code."')";
        $sqluser = mysql_query($qryuser); 
        $userid = mysql_insert_id();

如果数据已存在,则会向用户显示错误页面。如果没有,会有感谢页面。我的查询的问题是如果用户之前从未注册过,它仍然会出现错误页面,告诉他们数据已经存在于数据库中。

否则,是否有其他方法可以检查数据中是否已存在数据?

2 个答案:

答案 0 :(得分:0)

您正在针对emailic_numberpassport_number检查数据库。 是否有可能其中一个字段是空的?然后它可以匹配一些数据库行,它也是空的,你有记录。 在撰写查询之前,您应该检查要清空的值。

您应该将查询更改为:

$icNumber = $this->input->post('ic_number');
$passportNumber = $this->input->post('passport_number');

$qryc = "SELECT user_id FROM users WHERE login='".$this->input->post('email')."'";

if ((isset($icNumber) && trim($icNumber) != ''))
{
$qryc .= " OR ic_number='".$icNumber."'";
}

if ((isset($passportNumber) && trim($passportNumber) != ''))
{
$qryc .= " OR passport_number='".$passportNumber."'";
}

答案 1 :(得分:0)

确保所有字段(电子邮件,身份证号码或护照号码)包含值,您也可以尝试打印$ rsc以查看是否有任何行返回。