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