PHP + MySql,OR查询多个错误检查

时间:2013-09-04 23:12:47

标签: php mysql sql pdo

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

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

由于

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;
        }
    }