尝试使用PHP检查MySQL数据库中是否已存在用户名

时间:2013-11-30 05:08:06

标签: php mysql sql

我已经查看了许多与我的问题相似的其他帖子,并尽可能地实现了他们的解决方案(据我所知)。但是,每次执行此脚本时,都会执行else块中的代码(即使输入的用户名是已存在的用户名)。

表格名称为“用户”,我要搜索的列是“用户名”。 我的表单中的输入已被读入$username,我确认已使用 echo 正确读取。 $con包含与服务器的连接。

在某些时候,我也放入echo $query(没有打印)和echo mysql_num_rows($query)(没有打印)。

这是代码的相关部分。非常感谢一些提示。

$query = mysql_query("SELECT username FROM Users WHERE username=$username", $con);

  if (mysql_num_rows($query) != 0)
  {
      echo "Username already exists";
  }

  else
  {
    ...
  }
编辑:显然我应该使用mysqli为我的服务器和我检查num_rows的方式是通过执行$ query-> num_rows,因为它是对象的属性。谢谢你的帮助!

8 个答案:

答案 0 :(得分:10)

将您的查询更改为喜欢。

$username = mysql_real_escape_string($username); // escape string before passing it to query.
$query = mysql_query("SELECT username FROM Users WHERE username='".$username."'");

但是,不推荐使用MySQL。您应该使用MySQLiPDO

答案 1 :(得分:3)

试试这个:

$query = mysql_query("SELECT username FROM Users WHERE username='$username' ")

请勿将$con添加到mysql_query()功能。

免责声明:在传递给username的字符串中使用mysql_query变量,如上所示,是一个简单的SQL注入攻击向量,到目前为止,username依赖于Web的参数请求(查询字符串,标题,请求正文等),或恶意实体可能控制的参数。

答案 2 :(得分:1)

$ query = mysql_query(“从用户名中选择用户名='$ username'”的用户名)

使用准备好的语句,请勿使用已弃用的mysql。

// check if name is taken already
$stmt = $link->prepare("SELECT username FROM users WHERE username = :username");
$stmt->execute([
    'username' => $username
]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

if (isset($user) && !empty($user)){
    // Username already taken
}

答案 3 :(得分:-1)

尝试这一个

 mysql_connect('localhost','dbuser','dbpass');

$query = "SELECT username FROM Users WHERE username='".$username."'";
mysql_select_db('dbname');

    $result=mysql_query($query);

   if (mysql_num_rows($query) != 0)
   {
     echo "Username already exists";
    }

    else
   {
     ...
    }

答案 4 :(得分:-1)

$firstname = $_POST["firstname"];
$lastname = $_POST["lastname"];
$email = $_POST["email"];
$pass = $_POST["password"];

$check_email = mysqli_query($conn, "SELECT Email FROM crud where Email = '$email' ");
if(mysqli_num_rows($check_email) > 0){
    echo('Email Already exists');
}
else{
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $result = mysqli_query($conn, "INSERT INTO crud (Firstname, Lastname, Email, Password) VALUES ('$firstname', '$lastname', '$email', '$pass')");
}
    echo('Record Entered Successfully');
}

答案 5 :(得分:-1)

这是我写的:

$error = false;
$sql= "SELECT username FROM users WHERE username = '$username'";
$checkSQL = mysqli_query($db, $checkSQL);

if(mysqli_num_rows($checkSQL) != 0) {
   $error = true;
   echo '<span class="error">Username taken.</span>';
}

像魅力一样!

答案 6 :(得分:-2)

更改此

$query = mysql_query("SELECT username FROM Users WHERE username=$username", $con);

$query = mysql_query("SELECT username FROM Users WHERE username='$username'");

答案 7 :(得分:-2)

PHP 7改进了查询.........

$sql = mysqli_query($conn, "SELECT * from users WHERE user_uid = '$uid'"); if (mysqli_num_rows($sql) > 0) { echo 'Username taken.'; }