Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在sql和php中检查用户名是否存在代码_Php_Mysql_Sql - Fatal编程技术网

在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或类似工具一起使用,以完全避免此问题。