Почему эта часть кода возвращает true
, даже если это не должно быть?
$stmt = $dbh->prepare("SELECT COUNT(`user_id`) FROM `users` WHERE `username`= :username LIMIT 1");
$stmt->bindParam(':username', $username);
$stmt->execute();
return ($stmt->rowCount() == 1) ? true : false;
Если я ввожу имя пользователя в поле, которое уже было зарегистрировано, оно возвращает значение true, которое затем выдает:
That username has already been taken!
Но если я введу имя пользователя, которое не было зарегистрировано , оно все равно вернет true и выведет строку выше. Я не уверен, почему это так и как это можно исправить.
Я знаю, что в руководстве по PHP говорится, что rowCount()
имеет некоторые проблемы с SELECT
запросами, но я не могу найти обходной путь для этого, который возвращает количество строк, затронутых SELECT
query.