Php 试图阻止创建重复用户时遇到问题

Php 试图阻止创建重复用户时遇到问题,php,validation,if-statement,login,mysqli,Php,Validation,If Statement,Login,Mysqli,我一辈子也找不出这是怎么回事。这可能是一些隐藏的规则或愚蠢的错误。此代码旨在防止用户创建同一用户或同一电子邮件两次,但仅适用于用户名。我是错过了什么,还是只是一个愚蠢的错误?我正在使用两个if语句来尝试实现这一点(正如评论中所指出的),但它不起作用 提前谢谢 $username = $_POST['username']; $password = $_POST['password']; $email = $_POST['emailAddress']; // Create connection

我一辈子也找不出这是怎么回事。这可能是一些隐藏的规则或愚蠢的错误。此代码旨在防止用户创建同一用户或同一电子邮件两次,但仅适用于用户名。我是错过了什么,还是只是一个愚蠢的错误?我正在使用两个if语句来尝试实现这一点(正如评论中所指出的),但它不起作用

提前谢谢

$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['emailAddress'];


// Create connection
$conn = new mysqli($servername, $SQLusername, $SQLpassword, $DBname);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysql_connect_error());
}

$sql = "SELECT * FROM `Login` WHERE `Username` LIKE '$username' AND `Password` LIKE '$password';";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);

$emailDB = $row['Email'];
$usernameDB = $row['Username'];

// username validation
if ($username == $usernameDB)
{
    echo "Username '$username' is already taken!<br>";
    exit;
}
//E-mail validation
if ($email == $emailDB)
{
    echo "Email '$email' is already registered!<br>";
    exit;
}
$username=$\u POST['username'];
$password=$_POST['password'];
$email=$_POST['emailAddress'];
//创建连接
$conn=newmysqli($servername、$SQLusername、$SQLpassword、$DBname);
//检查连接
如果(!$conn){
死(“连接失败:.mysql_connect_error());
}
$sql=“从`Login`中选择*,其中`Username`类似于`Username`和`Password`类似于`Password';”;
$result=mysqli\u查询($conn,$sql);
$row=mysqli\u fetch\u assoc($result);
$emailDB=$row['Email'];
$usernameDB=$row['Username'];
//用户名验证
如果($username==$usernameDB)
{
echo“用户名'$Username'已被占用!
”; 出口 } //电子邮件验证 如果($email==$emailDB) { echo“电子邮件“$Email”已注册!
”; 出口 }
您只需要另一个查询:):


因为如果它不是真的相等,新用户可以注册:-)

但它不起作用。你能再描述一下吗?!你的查询看起来不像是在检查你想要什么。您只需要计算与密码或用户名匹配的行数。如果有的话,你有一份副本。您可以在查询中使用=而不是like。存储明文密码通常被认为是不好的做法,但这是另一回事。您的查询将只返回用户名和密码都匹配的行。如果他们这样做了,代码将退出并显示“用户名已获取”消息。如果用户名或密码与您的查询不匹配,那么您的查询将不会返回任何行,您随后的代码将无法通过测试,并且您的错误日志将充满警告和通知,正如PHP所做的那样,最好是处理混乱。而不是您正在尝试做的事情,首先,对于不允许重复的列,应该使用唯一索引。
$sql = "SELECT * FROM `Login` 
       WHERE `Username` LIKE '$username' 
       OR `Email` LIKE '$email';";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);

$emailDB = $row['Email'];
$usernameDB = $row['Username'];

// username validation
if ($username == $usernameDB)
{
    echo "Username '$username' is already taken!<br>";
    exit;
}
//E-mail validation
if ($email == $emailDB)
{
    echo "Email '$email' is already registered!<br>";
    exit;
}
"SELECT * FROM `Login` 
           WHERE `Username` = '$username' 
           OR `Email` = '$email';"