我的“如果”似乎是正确的,即使它是不应该的.PHP和MySQLI


My if-statement seems go even though it's not supposed. PHP & MySQLI

我一直在试图处理一个网站,你可以创建一个帐户,并有唯一的用户名。目前,我有一个if语句来检查在创建帐户时是否出现错误。

function createuser($username,$pass,$namn,$secret,$svar,$connection){
    $query = "INSERT INTO login SET 
    user = '$username',
    pass = '$pass',
    namn = '$namn',
    secretpass = '$svar',
    Question = '$secret'";
    $result = mysqli_query($connection,$query);
    if (!mysqli_query($connection,$query))
    {
        if(mysqli_error($connection) == "Duplicate entry '$username' for key 'user'")
        {
            echo "This username already exists.";
        }
    }
}

我的问题是,当我做一个帐户,有一个唯一的用户名,我仍然得到"这个用户名已经存在"。当我得到错误时,它应该被执行

知道问题可能在哪里吗?

Thanks in advance

问题是你做了两次查询:

$result = mysqli_query($connection,$query); //query executed here
if (!mysqli_query($connection,$query)) //query re-executed here too
{
    if(mysqli_error($connection) == "Duplicate entry '$username' for key 'user'")
    {
        echo "This username already exists.";
    }
}

所以不管发生什么,你的"if"语句总是为假,因为如果你的第一次查询成功,重新执行它将产生一个假的结果,如果第一次失败,它将再次失败。

我认为你的代码应该是:

$result = mysqli_query($connection,$query);
if (!$result) 
{
    if(mysqli_error($connection) == "Duplicate entry '$username' for key 'user'")
    {
        echo "This username already exists.";
    }
}