Я пытаюсь проверить, существует ли опубликованное имя пользователя в моей базе данных. Я не уверен, где я ошибаюсь. Другие приведенные ниже условия работают правильно. Когда я отправляю форму, я всегда получаю «Имя пользователя занято», даже если такого имени нет в моей базе данных. Любая помощь будет принята с благодарностью. Спасибо!
$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, а не количество записей.
Если это решило вашу проблему, считайте, что пометка соответствует ответу - meta.stackexchange.com/questions/5234/…
Спасибо, заработало! Не понял, что count всегда возвращает 1 запись.