如何判断是否已在数据库中使用用户名

时间:2011-07-07 17:36:14

标签: php mysql login

如何判断数据库中的用户名是否已通过php用于注册页面?

4 个答案:

答案 0 :(得分:5)

类似的东西:

$sql = 'SELECT * FROM USERS where user_name = "'.$_GET['username'].'"';
$res = mysql_query($sql);
if($res && mysql_num_rows($res)>0){
  echo 'taken';
} else {
  echo 'free';
}

答案 1 :(得分:4)

从概念上讲,您可能会将GET用于使用WHERE子句运行针对数据库的查询的脚本的用户名字段,其中username等于{{1}变量。如果它返回匹配,则使用用户名。

有很多方法可以做到这一点,如果你有更具体的规范,我可以详细说明。

我们从评论中得到了一些非常有趣的观点;根据我对UI的体验,我肯定会检查“内联”,这意味着您可以通过AJAX检查用户名的状态,以便立即给出一些关于用户名是否被采用的反馈。在这种情况下,您肯定会使用GET

如果这不是您的意图,并且您在注册表单中提交任何敏感信息(在这种情况下,可能是密码),请使用GET(请参阅此问题:{{ 3}})

答案 2 :(得分:2)

我认为你正在寻找类似的东西。

$username = $_POST['username'];
$query = sprintf("SELECT * FROM users WHERE user='%s'", mysql_real_escape_string($username));
$result = mysql_query($query);

if(!$result) {
    // Some kind of error occurred with your connection.
} else {
    if(mysql_num_rows($result) > 0) {
        // Throw an error, the username exists
    } else {
        // Good to go...
    }
}

答案 3 :(得分:2)

尝试这可能它可以帮助你 当然你需要修剪输入

//first check if it's not empty input
if (empty($_POST['userName'])) {
        $userNameErr = "User name required";
    } else {
        $userName = $_POST['userName'];
        $getData= $db->prepare("SELECT * FROM tableName WHERE user_name=?");
        $getData->bind_param('s', $userName);
        if($getData->execute()){
            $results = $getData->get_result();
            if($results->num_rows>0){
                $userNameErr = "User name already token";
            }
        }
        //check the input characters
        if (!preg_match("/^[0-9_a-zA-Z]*$/", $userName)) {
            $userNameErr = "Only letters, numbers and '_' allowed";
        }
    }

希望这会有所帮助。