通过使用预准备语句验证数据库中是否已存在用户名...如何?

时间:2013-11-23 10:38:32

标签: php validation mysqli prepared-statement

我正在尝试验证用户名,以确保我的数据库中不存在相同的用户名。我正在尝试使用准备好的陈述。

我现在要做的是通过检查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!";
    }

2 个答案:

答案 0 :(得分:2)

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

 if($stmt->num_rows>0){

   $usernameError = "Username already exists!";
}else{

    $usernameError = "";
}

答案 1 :(得分:0)

使用fetch()方法有效。

(发帖因为无法删除带答案的问题)

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