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
是赋值,而不是布尔检查(针对不同的情况)?您的意思是什么?请详细说明,我正在使用它,因此如果用户正在注册,它将这样做,如果他们没有注册,它将做其他事情。