在sql和php中检查用户名是否存在代码

时间:2013-09-14 16:20:53

标签: php mysql sql

我编写了一个代码来检查数据库中是否存在用户名。似乎返回即使存在相同的用户名也没有这样的用户名。

$conu=mysqli_connect("localhost","db_user","db_pass","db_name");
$result = mysql_query("SELECT 1 FROM member WHERE username = $username");
if ($result && mysql_num_rows($result) > 0) {
$user_err = "<i><span class='error'>Usernme already exists</span></i>";
    $errflag = true;
}
elseif(preg_match("/^[0-9a-zA-Z_]{5,}$/", $username) === 0) {
    $user_err = "<i><span class='error'>Usernme must be bigger than 5 chararacters and can contain only digits, letters and underscore</span></i>";
    $errflag = true;
}

4 个答案:

答案 0 :(得分:3)

尝试

mysql_query("SELECT username FROM member WHERE username = '$username' LIMIT 1;");

SELECT 1实际上并没有使用数据库;它始终返回1,因此无论member表的内容如何,​​结果总是相同的。

答案 1 :(得分:0)

我认为用户名是某种varchar?如果是这种情况,您可能希望将其值放在引号中:

$result = mysql_query("SELECT `username` FROM `member` WHERE `username` = '".$username."' LIMIT 1;");

您的查询受到sql injections btw。

的约束

答案 2 :(得分:0)

首先,您尝试返回可能不存在的列:“1”
其次,我希望你清理$ username,否则你允许任何人注入你的数据库。

正确的查询是

mysql_query("SELECT * FROM `member` WHERE `username`='$username'");

答案 3 :(得分:0)

  1. 您正在使用mysqli进行连接,但使用mysql来执行查询。
  2. 当您SELECT 1 FROM member WHERE username = $username时,结果将始终为1
  3. 您需要在引号中将$username放入查询中。像SELECT username FROM member WHERE username = '$username'
  4. 之类的东西
  5. 如果您的帖子中没有此类用户名,则您忘记包含部分代码。