2013-08-04 2 views
0

Я использую 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'); } 

ответ

0

Попробуйте это:

$result = mysqli_query($connection, "SELECT COUNT(`ID`) AS count FROM users WHERE username='$usernamelogin' AND `active`='1'"); 
$row = mysqli_fetch_assoc($result); 
var_dump($row['count'] < 1); 

Edit: Изменено одиночные кавычки, чтобы поддержать котировки.

+0

Это отвечает логическое значение (истина) является ли условие истинным или ложным. @Henrique – EveyPortman

+0

Это не имеет смысла. Что такое 'var_dump ($ row ['count']),' does? –

+0

О, теперь я вижу проблему, вы используете одинарные кавычки для выхода из активного поля, вы должны использовать backquotes '\' 'или вообще не кавычки. –

0

У вас есть одинарные кавычки вокруг поля ID - так что это строка. Попробуйте удалить их или используя `метки вокруг идентификатора поля, как это:

SELECT COUNT(`ID`) FROM users 

Вы также одинарные кавычки переменной, вставленной в SQL так окончательное исправление будет:

"SELECT COUNT(`ID`) FROM users WHERE username=$usernamelogin AND `active`='1'" 
+0

Я считаю, что вы правы в том, что нужно исправлять. Однако это не исправить мою проблему, я все еще получаю только 1 и bool (true). @nikica – EveyPortman

+0

Объединив два ответа, которые я получил, возвратил bool (false)! – EveyPortman

Смежные вопросы