所以我在PHP中有一个if语句来检查SQL表中是否已经使用了用户名/电子邮件,但是当我测试它时,它一直说用户名/电子邮件已经在使用中,即使它已经在使用不。所以我假设我做了if语句或检索错误的数据,但我无法找出我做错了什么。此外,当我检查字段是否为空时,即使它们仍在继续,也不要求它们填写所有字段。如果有人能告诉我这些代码行中有什么问题,我将不胜感激。感谢。
$sql="SELECT username, email FROM table_name";
$result=mysqli_query($con,$sql);
if($result === FALSE){
}else{
$row=mysqli_fetch_array($result);
}
if (empty($_POST['firstname']) || empty($_POST['lastname']) || empty($_POST['username']) || empty($_POST['email']) || empty($_POST['password']) || empty($_POST['password2'])) {
if(!($_POST['username'] == $row['username']) && ($_POST['email'] == $row['email'])) {
} else {
echo '<script type="text/javascript">'
, 'window.alert("That username or email is already in use.")'
, '</script>';
}
} else {
echo '<script type="text/javascript">'
, 'window.alert("Please fill in all the fields.")'
, '</script>';
}
答案 0 :(得分:2)
如果从名为$row
的数据库中获取数组,则必须检查该数组并检查用户名是否为||找到电子邮件。 (注意我重命名为$row -> $rows
if($result === FALSE){
}else{
$rows=mysqli_fetch_array($result);
}
if(isset($_POST['firstname']) && isset($_POST['lastname']) && isset($_POST['username']) && isset($_POST['email']) && isset($_POST['password']) && isset($_POST['password2'])){
foreach ($rows as $row) {
if($row['username'] == $_POST['username'] || $row['email'] == $_POST['email']){
echo '<script type="text/javascript">'
, 'window.alert("That username or email is already in use.")'
, '</script>';
break;
}
}
}
else{
echo '<script type="text/javascript">'
, 'window.alert("Please fill in all the fields.")'
, '</script>';
}
希望我能用平板电脑做到这一点。
答案 1 :(得分:0)
试试这段代码:
SELECT username, email FROM table_name WHERE username="user" AND email="email"
您需要传递查询列信息以与数据库进行比较,否则它将返回数据库中的所有行。因此,您将始终获得FALSE
以外的返回值。