0

目前我必须使用 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 个查询吗?

我想尽量减少查询的使用。

谢谢

4

1 回答 1

0

试试这个:(并且由于您使用 prepare() 并执行,请阅读此处):

$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;
        }
    }
于 2013-09-04T23:25:40.657 回答