在sql和php中检查用户名是否存在代码
我已经编写了一个代码来检查数据库中是否存在用户名。即使存在相同的用户名,似乎也没有这样的用户名在sql和php中检查用户名是否存在代码,php,mysql,sql,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_
$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;
}
$conu=mysqli_connect(“localhost”、“db_user”、“db_pass”、“db_name”);
$result=mysql_查询(“从username=$username的成员中选择1”);
如果($result&&mysql\u num\u行($result)>0){
$user\u err=“Usernme已经存在”;
$errflag=true;
}
elseif(preg_match(“/^[0-9a-zA-Z!]{5,}$/”,$username)==0){
$user_err=“Usernme必须大于5个字符,并且只能包含数字、字母和下划线”;
$errflag=true;
}
试试看
SELECT 1
未实际使用数据库;它总是返回1
,因此无论成员的内容如何,结果总是相同的。试试看
SELECT 1
未实际使用数据库;它总是返回1
,因此无论成员的表的内容如何,结果总是相同的。我认为它的用户名是某种varchar?如果是这种情况,您可能希望将其值用引号括起来:
$result = mysql_query("SELECT `username` FROM `member` WHERE `username` = '".$username."' LIMIT 1;");
顺便说一句,您的查询受到sql注入的影响。我认为用户名是某种varchar?如果是这种情况,您可能希望将其值用引号括起来:
$result = mysql_query("SELECT `username` FROM `member` WHERE `username` = '".$username."' LIMIT 1;");
您的查询受到sql注入的约束。首先,您试图返回一个可能不存在的列:“1”
其次,我希望您正在清理$username,否则您将允许任何人插入您的数据库
正确的查询是
mysql_query("SELECT * FROM `member` WHERE `username`='$username'");
首先,您试图返回一个可能不存在的列:“1”
其次,我希望您正在清理$username,否则您将允许任何人插入您的数据库
正确的查询是
mysql_query("SELECT * FROM `member` WHERE `username`='$username'");
您使用mysqli进行连接,但使用mysql执行查询
当您从username=$username
中选择1时,结果总是1
您需要将$username
放在引号中的查询中。类似于从username='$username'
的成员中选择username
当您的帖子中没有这样的用户名时,您忘记了包含代码的一部分
您使用mysqli进行连接,但使用mysql执行查询
当您从username=$username
中选择1时,结果总是1
您需要将$username
放在引号中的查询中。类似于从username='$username'
的成员中选择username
当您的帖子中没有这样的用户名时,您忘记了包含代码的一部分
您很可能会受到SQL注入攻击,如果您还没有受到攻击,您将被黑客攻击。使用PDO或类似的准备好的/参数化的查询来完全避免这个问题。你很可能会受到SQL注入攻击,如果你还没有受到攻击,你会被黑客攻击。将准备好的/参数化查询与PDO或类似工具一起使用,以完全避免此问题。