我一直在试图处理一个网站,你可以创建一个帐户,并有唯一的用户名。目前,我有一个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.";
}
}