Исключение PHP: мультиоператоры

Я попытался взять уровень пользователя из моей базы данных и проверить, какой уровень у пользователя. Когда я пытаюсь сделать это:

include "../web/config.php";
$adminTrueQuery = mysql_query("SELECT * FROM `users` WHERE `Username` = '$admin_username' AND `Password` = '$admin_password' LIMIT 1;");
$adminLevel = mysql_fetch_array($adminTrueQuery);
$adminLevel = $adminLevel['Level'];
if($adminLevel !== "c" || "b") {
throw new Exception ("You don't admin {$adminLevel}"); // return
}

Я получаю ошибку. А также

$adminLevel = "c";

В чем проблема?

0

Решение

Это не то, как многократные сравнения работают в PHP. Вам нужно сравнить оба значения с исходным значением:

if($adminLevel !== "c" && $adminLevel !== "b") {

Или, если у вас есть много значений для проверки, используйте in_array():

if(!in_array($adminLevel, ['b','c'])) {

$adminLevel = "c"; не будет работать, потому что = является оператором присваивания, а не оператором сравнения. Это всегда будет возвращать true, если значение, которое вы пытаетесь сравнить, жонглирует типом с истинным значением (что и делают ваши значения).

4

Другие решения

Других решений пока нет …