目前我必须使用2个查询来检查数据库是否已包含电子邮件或IP。
我的代码现在:
$link = $db->prepare("SELECT * FROM users WHERE email=?");
if($link->execute(array($login))){
if($link->rowCount() > 0){
$errmsg_arr[] = 'Email is already in use';
$errflag = true;
}
}
$link = $db->prepare("SELECT * FROM users WHERE Ip=?");
if($link->execute(array($ip))){
if($link->rowCount() > 0){
$errmsg_arr[] = 'There is allready account registered with this IP address';
$errflag = true;
}
}
如果我使用此查询以及如何操作,是否可以检查是否已经使用过电子邮件或IP?
$link = $db->prepare("SELECT * FROM users WHERE email=? OR Ip=?");
编辑:要清楚,我想提供2个不同的错误,而不是告诉用户“电子邮件或IP已经在使用中”的错误
if($link->execute(array($login, $ip))){
// WHAT HERE?
// CHECK IF EMAIL IS ON USE
$errmsg_arr[] = 'Email is already in use';
//CHECK IF IP IS USED
$errmsg_arr[] = 'There is allready account registered with this IP address';
$errflag = true;
}
那么,只需1个查询就可以了吗?
我想尽量减少查询的使用。
由于
答案 0 :(得分:0)
试试这个:(因为你使用prepare()并执行,请阅读here):
$link = $db->prepare("SELECT * FROM users WHERE email=? OR Ip=?");
if($link->execute(array($email, $ip))){
if($link->rowCount() > 0){
$errmsg_arr[] = 'Email or IP is already in use';
$errflag = true;
}
}