Как я могу сделать этот запрос PDO MySQL с, если операторы работают правильно? - PullRequest
3 голосов
/ 22 августа 2011

Я создаю веб-сайт с нуля для небольшого проекта.

Я наткнулся на небольшую проблему и почесал голову над ней безрезультатно! Вот мой код;

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' и 'ACCOUNT NEEDS ACTIVATING'

Я думал о том, чтобы поместить их в операторы «else if», но мне нужно, чтобы имя пользователя и адрес электронной почты работали вместе, а не если одно работает, то другое. Есть идеи ??

Заранее спасибо.

1 Ответ

2 голосов
/ 22 августа 2011

Это то, что вы ищете?

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';
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...