Php 如果语句工作正常,如何使这个PDO mysql查询生效?

Php 如果语句工作正常,如何使这个PDO mysql查询生效?,php,mysql,pdo,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 (

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

我偶然发现了我的一个小问题,对此我挠头也没用!这是我的密码

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';
    }
}
else if(isset($\u POST['hidden'])&&&$\u POST['hidden']=1){
$q=$dbc->prepare(“从用户名=?”的帐户中选择用户名”);
$q->execute(数组($_POST['username']);
如果($q->rowCount()>0){
回显“获取用户名
”; } $q=$dbc->prepare(“从电子邮件=?”的帐户中选择电子邮件”); $q->execute(数组($_POST['email']); 如果($q->rowCount()>0){ 回显“收到的电子邮件
”; } 否则{ $q=$dbc->prepare(“在帐户中插入(fname、lname、电子邮件、密码、用户名、性别)值(?、、?、?、?、?、?)”;$q->execute(数组($\u POST['fname']、$\u POST['lname']、$\u POST['email']、$\u POST['password']、$\u POST['username']、$\u POST['gender')))); 回显“您的帐户需要激活”; } }
现在我的问题在于检查用户名和电子邮件是否已被占用

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

我有一个if语句用于检查电子邮件

我还有一个else语句,用于在一切正常的情况下将数据插入mysql表

我遇到的问题是用户名是相同的,电子邮件不是,然后else语句仍然激发,我知道它和我在html文档中的一样

“已使用用户名”和“帐户需要激活”

我想把它们放在“else-if”语句中,但我需要用户名和电子邮件一起工作,而不是一个有效,另一个无效。有什么想法吗


提前谢谢。

这就是你要找的吗

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';
    }
}
else if(isset($\u POST['hidden'])&&&$\u POST['hidden']=1){
$q=$dbc->prepare(“从用户名=?”的帐户中选择用户名”);
$q->execute(数组($_POST['username']);
$username\u take=$q->rowCount()>0;
$q=$dbc->prepare(“从电子邮件=?”的帐户中选择电子邮件”);
$q->execute(数组($_POST['email']);
$email_take=$q->rowCount()>0;
如果($username|u take |$email|u take){
如果($username\u){
回显“获取用户名
”; } 如果($email_){ 回显“收到的电子邮件
”; } } 否则{ $q=$dbc->prepare(“在帐户中插入(fname、lname、电子邮件、密码、用户名、性别)值(?、、?、?、?、?、?)”;$q->execute(数组($\u POST['fname']、$\u POST['lname']、$\u POST['email']、$\u POST['password']、$\u POST['username']、$\u POST['gender')))); 回显“您的帐户需要激活”; } }
效果很好,谢谢:)我没想过要这样做,非常感谢!您知道
$\u POST['hidden']=1
是赋值,而不是布尔检查(针对不同的情况)?您的意思是什么?请详细说明,我正在使用它,因此如果用户正在注册,它将这样做,如果他们没有注册,它将做其他事情。