如何判断数据库中的用户名是否已通过php用于注册页面?
答案 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";
}
}
希望这会有所帮助。