我想检查电子邮件,身份证号码或护照号码是否已经注册,我使用此查询:
$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 :(得分:0)
您正在针对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."'";
}
答案 1 :(得分:0)
确保所有字段(电子邮件,身份证号码或护照号码)包含值,您也可以尝试打印$ rsc以查看是否有任何行返回。