我正在为一个小项目从头开始构建一个网站。
我偶然发现了我的一个小问题,并且摸不着头脑无济于事!这是我的代码;
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'语句中,但我需要用户名和电子邮件一起工作,如果一个工作而不是另一个工作。任何想法??
提前致谢。
答案 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';
}
}