php - 检查数据库准备语句中是否已存在用户名

标签 php mysql mysqli

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

$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 返回的值,而不是记录数。

关于php - 检查数据库准备语句中是否已存在用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55553570/

相关文章:

mysql - 如何连接两个表

mysql - 从列不为 Null 的数据库中获取所有列

php - 检测是否正在调用 mysql 或 mysqli 进行连接

javascript - PHP - 将图像插入数据库

php - 如何将 mysqli_stmt_affected_rows() 与准备好的语句一起使用?

php - 用户使用 paypal 付款后,如何将订单数据存储到 mySQL 中

php - 在 PHP 中构建一个真正的面向对象的框架,需要建议

php - 随机 sleep 可以防止定时攻击吗?

php - 如何在通过 Ajax 提交的表单上重新加载验证码?

php - 如何将自动事件附加到 jquery 克隆元素(其类自动递增)