我一直在努力创建一个可以创建帐户并拥有唯一用户名的网站。目前,我有一个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.";
}
}
}
我的问题是,当我创建一个拥有唯一用户名的帐户时,我仍然会收到“此用户名已存在”。这应该在我收到错误时执行。
可能出现问题的任何线索?
提前致谢
答案 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.";
}
}