使用准备好的语句验证数据库中是否已存在用户名..如何


validating if username already exists in database by using prepared statements... how to?

我正在尝试验证用户名,以确保我的数据库中不存在相同的用户名。我正试图利用事先准备好的发言来做到这一点。

我现在想做的是通过检查STMT返回的内容来查看帖子是否存在。我真的不确定我是否会朝着正确的方向前进。

我做错了什么?

编辑:尽管我尝试了别人的建议,但我仍然在数据库中添加重复的用户名。

    if (empty($username))
    {
        $usernameError = "Required!";
    }
    else if (preg_match('/^[A-Z ''.-]{2,20}$/i', $username))
    {
        if ($stmt1 = $dbc->prepare("SELECT username FROM users WHERE username = ?"))
        {
            $stmt1->bind_param('s', $username);
            $stmt1->execute();
            if($stmt1->num_rows>0)
            {           
                $usernameError = "Username already exists!";
            }
            else
            {
                $usernameError = "";
            }
            $stmt1->close();
        }
    }
    else
    {
        $usernameError = "Incorrect Username!";
    }

不要使用if($stmt != FALSE),而是使用if($stmt->num_rows>0)

 if($stmt->num_rows>0){
   $usernameError = "Username already exists!";
}else{
    $usernameError = "";
}

使用fetch()方法有效。

(张贴,因为无法删除有答案的问题)

if($stmt->fetch())
{           
    $usernameError = "Username already exists!";
}
else
{
    $usernameError = "";
}