即使它不是假设,我的if语句似乎也是如此。 PHP&库MySQLi

时间:2015-07-23 19:02:34

标签: 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.";
        }
    }
}

我的问题是,当我创建一个拥有唯一用户名的帐户时,我仍然会收到“此用户名已存在”。这应该在我收到错误时执行。

可能出现问题的任何线索?

提前致谢

1 个答案:

答案 0 :(得分:1)

问题是您正在进行两次查询:

$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.";
    }
}