我使用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'");
SOLUTION:
實現成代碼的溶液:
$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'); }
回答那布爾(真)無論條件是真還是假。 @亨利克 – EveyPortman
這沒有任何意義。什麼'var_dump($ row ['count']);'做什麼? –
哦,現在我看到了問題,您使用單引號來轉義活動字段,您應該使用反引號''''或者根本不引用引號。 –