检查数据是否已存在


Check whether data already exist or not

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

$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();

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

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

您正在根据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."'";
}

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