我想检查电子邮件,身份证号码或护照号码之前是否已注册,因此,我使用此查询:
$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();
如果数据已经存在,它将给用户带来错误页面。如果没有,将有感谢页面。我的查询的问题是,如果用户以前从未注册过,它仍然会出现错误页面,告诉他们数据库中已经存在数据。
否则,是否有其他方法可以检查数据库中是否已存在数据?
您正在根据email
、ic_number
或passport_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以查看是否有任何行返回。