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

Php 如何判断数据库中是否已使用用户名,php,mysql,login,Php,Mysql,Login,如何判断数据库中的用户名是否已被php用作注册页?从概念上讲,您可能会使用GET for username字段来创建一个脚本,该脚本使用WHERE子句对数据库运行查询,其中username等于GET变量。如果返回匹配项,则使用用户名 有很多方法可以做到这一点,如果你有一个更具体的规范,我可以详细阐述 我们从评论中得到了一些非常有趣的观点;根据我在UI方面的经验,我肯定会进行内联检查,这意味着您可以通过AJAX检查用户名的状态,以立即提供一些关于是否使用用户名的反馈。在这种情况下,您肯定会使用GE

如何判断数据库中的用户名是否已被php用作注册页?

从概念上讲,您可能会使用GET for username字段来创建一个脚本,该脚本使用WHERE子句对数据库运行查询,其中username等于GET变量。如果返回匹配项,则使用用户名

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

我们从评论中得到了一些非常有趣的观点;根据我在UI方面的经验,我肯定会进行内联检查,这意味着您可以通过AJAX检查用户名的状态,以立即提供一些关于是否使用用户名的反馈。在这种情况下,您肯定会使用GET


如果这不是您的意图,并且您在本例中提交了任何敏感信息,可能是注册表单中的密码,请使用POST查看此问题:

从概念上讲,您可能会使用GET作为用户名字段来创建一个脚本,该脚本使用WHERE子句对数据库运行查询,其中username等于GET变量。如果返回匹配项,则使用用户名

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

我们从评论中得到了一些非常有趣的观点;根据我在UI方面的经验,我肯定会进行内联检查,这意味着您可以通过AJAX检查用户名的状态,以立即提供一些关于是否使用用户名的反馈。在这种情况下,您肯定会使用GET

如果这不是您的意图,并且您在本例中提交了任何敏感信息,可能是注册表单中的密码,请使用POST查看此问题:

类似于:

$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';
}
比如:

$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';
}

我想你在找这样的东西

$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...
    }
}

我想你在找这样的东西

$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...
    }
}

试试这个也许对你有帮助 当然,您需要调整输入

//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";
        }
    }

希望这有帮助。

试试这个,也许它能帮你 当然,您需要调整输入

//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";
        }
    }

希望这能有所帮助。

为什么要发帖?你不是真的在做一个动作,所以你不是更合适吗?我可以支持你。我非常习惯于发布敏感数据,所以我在这里使用了它。考虑一下这里的工作流程:1个用户填写表单,2个用户将数据发布到服务器,3个验证@Mike Swift理想情况下至少从UI角度来看,检查应该通过AJAX完成,但在这方面问题有点模糊。@melee你是对的。在这种情况下,工作流将更改为GET。为什么要发布?你不是真的在做一个动作,所以你不是更合适吗?我可以支持你。我非常习惯于发布敏感数据,所以我在这里使用了它。考虑一下这里的工作流程:1个用户填写表单,2个用户将数据发布到服务器,3个验证@Mike Swift理想情况下至少从UI角度来看,检查应该通过AJAX完成,但在这方面问题有点模糊。@melee你是对的。在这种情况下,工作流将更改为GET。它会给我以下错误警告:mysql_num_rows期望参数1为resource,boolean given。请尝试此操作。听起来你从mysql\u查询中得到的信息是错误的。你确定你的数据库配置正确吗?它给我这个错误警告:mysql\u num\u rows期望参数1是资源,布尔给定。试试这个。听起来你从mysql\u查询中得到的信息是错误的。您确定您的数据库配置正确吗?对于现在发现此问题的任何人,请不要使用此不推荐使用的代码。请参阅:对于现在发现此代码的任何人,请不要使用此不推荐使用的代码。见: