如何使用if语句正常工作来创建此PDO mysql查询?

时间:2011-08-22 02:35:52

标签: php mysql pdo

我正在为一个小项目从头开始构建一个网站。

我偶然发现了我的一个小问题,并且摸不着头脑无济于事!这是我的代码;

else if (isset($_POST['hidden']) && $_POST['hidden'] = 1) {

$q = $dbc -> prepare("SELECT username FROM accounts WHERE username = ?");
$q -> execute(array($_POST['username']));

    if ($q -> rowCount() > 0) {
        echo 'USERNAME TAKEN<br />';
    }

$q = $dbc -> prepare("SELECT email FROM accounts WHERE email = ?");
$q -> execute(array($_POST['email']));

    if ($q -> rowCount() > 0) {
        echo 'EMAIL TAKEN<br />';
    }

    else {
        $q = $dbc -> prepare("INSERT INTO accounts (fname, lname, email, password, username, gender) VALUES (?, ?, ?, ?, ?, ?)");       $q -> execute(array($_POST['fname'], $_POST['lname'], $_POST['email'], $_POST['password'], $_POST['username'], $_POST['gender']));
        echo 'YOUR ACCOUNT NEEDS ACTIVATING';
    }
}

现在我的问题在于检查是否已经使用了用户名和电子邮件。

我有一个用于检查用户名的if语句。

我有一个if语句来检查电子邮件。

如果一切正常,我还有一个将数据插入mysql表的声明。

我遇到的问题是用户名是相同的,电子邮件不是那么else语句仍然会触发,我知道它就像我的html文档一样

'USERNAME TAKEN'&amp; '帐户需要激活'

我考虑将它们放在'else if'语句中,但我需要用户名和电子邮件一起工作,如果一个工作而不是另一个工作。任何想法??

提前致谢。

1 个答案:

答案 0 :(得分:2)

这是你要找的吗?

else if (isset($_POST['hidden']) && $_POST['hidden'] = 1) {


    $q = $dbc -> prepare("SELECT username FROM accounts WHERE username = ?");
    $q -> execute(array($_POST['username']));
    $username_taken = $q->rowCount() > 0;

    $q = $dbc -> prepare("SELECT email FROM accounts WHERE email = ?");
    $q -> execute(array($_POST['email']));

    $email_taken = $q->rowCount() > 0;

    if ($username_taken || $email_taken) {
        if ($username_taken) {
            echo 'USERNAME TAKEN<br />';
        }
        if ($email_taken) {
            echo 'EMAIL TAKEN<br />';
        }
    }
    else {
        $q = $dbc -> prepare("INSERT INTO accounts (fname, lname, email, password, username, gender) VALUES (?, ?, ?, ?, ?, ?)");       $q -> execute(array($_POST['fname'], $_POST['lname'], $_POST['email'], $_POST['password'], $_POST['username'], $_POST['gender']));
        echo 'YOUR ACCOUNT NEEDS ACTIVATING';
    }
}