php
  • mysql
  • codeigniter
  • 2016-03-04 96 views 1 likes 
    1

    我要检查或者电子邮件,身份证号码或护照号码之前一直如此登记,我用这个查询:检查数据是否已经存在或不

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

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

    否则,有没有其他的方法来检查数据库中是否已经存在数据?

    +0

    echo this variable $ qryc and show it to our – rahul

    +0

    'SELECT user_id FROM users WHERE login='[email protected]'AND ic_number ='232342'AND passport_number ='''这是查询时我没有填写护照号码字段 –

    回答

    0

    您正在查看DB针对email,ic_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."'"; 
    } 
    
    +0

    这是工作!非常感谢你! :D –

    0

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

    +0

    忘记告诉你,IC号码和护照字段不是两个都需要。它是一个,但不能留空两个 –

    +0

    @bennybenito如果只有一个值是空白的,这就是为什么你从DB – Maarty

    +0

    好的结果,这意味着,我应该使用AND和OR条件? –

    相关问题