我正在为一个小项目从头开始构建一个网站。
我偶然发现了一个小问题,绞尽脑汁也无济于事!这是我的代码;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' &"账号需要激活"
我想把它们放在'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';
}
}