-1

所以我在 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>';
}
4

2 回答 2

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>';
}

希望我没问题,使用平板电脑。

于 2013-07-01T15:48:54.903 回答
0

试试这个代码:

SELECT username, email FROM table_name WHERE username="user" AND email="email"

您需要传递查询列信息以与数据库进行比较,否则它将返回数据库中的所有行。因此,您将始终获得除FALSE.

于 2013-07-01T15:31:23.923 回答