Я использую PHP для создания формы входа, и одна часть проверки формы проверяет, является ли пользователь «активным», который является целым числом в таблице пользователей mysql, который будет равна 0 или 1 (1 является активированным). В моей текущей настройке пользователь не может войти в систему, если у них нет активной учетной записи. Моя первая попытка реализовать это была:Проверка активации учетной записи пользователя PHP не работает
//This code won't work because the query is an object, not an integer.
elseif(mysqli_query($connection, "SELECT COUNT('ID') FROM users WHERE username='$usernamelogin' AND 'active'='1'") < 1) {
echo('Account not activated. ');
}
Но это не сработало, потому что результатом является объект, а не int. Итак, я искал, как решить эту проблему, и получил следующее решение.
//if 1, account is active, if 0, account is inactive
$result = mysqli_query($connection, "SELECT COUNT('ID') FROM users WHERE username='$usernamelogin' AND 'active'='1'");
$row = mysqli_fetch_assoc($result);
$booly = ($row != 1) ? 1 : 0;
echo $booly;
Этот код, однако, только дает ответ 1, даже когда я ожидал бы дать 0. Где я пошло не так? Какие другие методы я могу использовать для реализации этой функции?
UPDATE:
я действительно неправильно используя одиночные кавычки вместо обратных кавычек, поэтому я попытался реализациями все следующих изменений (я считаю, что первый один, чтобы быть правильным, но испробовал все остальное, когда он Бесполезный работа). Ни один из них не изменил моих результатов.
"SELECT COUNT(`ID`) AS count FROM users WHERE username='$usernamelogin' AND 'active'='1'"
"SELECT COUNT(`ID`) FROM users WHERE username='$usernamelogin' AND active='1'")
"SELECT COUNT(`ID`) AS count FROM users WHERE 'username'='$usernamelogin' AND 'active'='1'"
"SELECT COUNT(`ID`) FROM users WHERE 'username'='$usernamelogin' AND 'active'='1'")
"SELECT COUNT(`ID`) AS `count` FROM `users` WHERE `username`='$usernamelogin' AND `active`='1'"
"SELECT COUNT(`ID`) FROM `users` WHERE `username`='$usernamelogin' AND `active`='1'")
Я попробовал это, как хорошо, но безрезультатно:
mysqli_query($connection, "SELECT COUNT(`ID`) FROM users WHERE username=$usernamelogin AND `active`='1'");
mysqli_query($connection, "SELECT COUNT(`ID`) FROM users WHERE username=$usernamelogin AND active='1'");
РЕШЕНИЕ:
Решение реализовано в коде:
$result = mysqli_query($connection, "SELECT COUNT(`ID`) AS count FROM users WHERE username='$usernamelogin' AND `active`='1'");
$row = mysqli_fetch_assoc($result);
if($row['count'] == true) {
echo('account not active'); }
Это отвечает логическое значение (истина) является ли условие истинным или ложным. @Henrique – EveyPortman
Это не имеет смысла. Что такое 'var_dump ($ row ['count']),' does? –
О, теперь я вижу проблему, вы используете одинарные кавычки для выхода из активного поля, вы должны использовать backquotes '\' 'или вообще не кавычки. –