检查db prepared语句中是否已存在用户名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查db prepared语句中是否已存在用户名相关的知识,希望对你有一定的参考价值。

我正在尝试检查我的数据库中是否已存在已发布的用户名。我不确定我哪里出错了。以下其他条件正常。当我提交表单时,即使我的数据库中没有这样的名称,我总是会收到“用户名”。任何帮助将不胜感激。谢谢!

$username = $_POST['username'];

 $stmt = $mysqli->prepare('SELECT COUNT(*) FROM users WHERE username = ?');

$stmt->bind_param('s', $username);

$stmt->execute();

$stmt->store_result();

 if(isset($_POST["submit"]))
 {

      if(empty($_POST["username"]))
      {
          echo '<script>alert("Username field empty")</script>';

     } else if(empty($_POST["password"])) {
          echo '<script>alert("Password field empty")</script>';

     } else if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
          echo '<script>alert("Incorrect email format")</script>';

     } else if($stmt->num_rows > 0) {
     echo '<script>alert("Username taken")</script>';
答案

selec count(*) ...总是返回1条记录,计数。所以,当你检查else if($stmt->num_rows > 0)时,它总是返回true。您应该检查count返回的值,而不是记录的数量。

以上是关于检查db prepared语句中是否已存在用户名的主要内容,如果未能解决你的问题,请参考以下文章

if语句检查文本框中的字符数

检查 MySQL 上是不是存在表 [重复]

用户在PEGA中输入值时,检查数据库中是否已存在用户名

检查 SQL Server 登录是不是已存在

检查Firestore中是否存在用户

使用 MySQLi 检查用户名是不是已存在