!
будет отрицать (наоборот) то, что вы ожидаете в результате, т. е. если у вас есть
var boy = true; undefined boy true! boy false
, когда вы вызываете boy
, ваш результат будет true
, но в тот момент, когда вы добавляете !
при вызове boy
, т. е. ! boy
, ваш результат будет false
. Другими словами, вы имеете в виду NotBoy, но на этот раз это в основном логический результат: либо true
, либо false
.
Это то же самое, что происходит с выражение ! function () {} ();
, работает только function () {} ();
сообщит вам об ошибке, но добавит !
прямо перед вашей функцией function () {} ();
делает ее противоположной функции () {} ();
, которая должна вернуть вас правда
. Пример можно увидеть ниже:
function () {} (); Инструкция SyntaxError: function требует имя! Function () {} (); true
From:
$admin = $CONNECT_TO_DATABASE->prepare("SELECT * FROM admin WHERE username = :username");
[...]
if ($settings['create_admins'] > 0 || $admin['super_admin'] > 0 ) {
$admin
имеет тип PDOStatament
, который является классом, а не массивом. Поэтому вы не можете вызвать на нем оператор []
.
Также вы действительно не должны всегда присваивать $admin
возвращаемому результату каждого метода, потому что большинство методов PDOStatament
возвращают логические значения:
$admin = $CONNECT_TO_DATABASE->prepare("SELECT * FROM admin WHERE username = :username");
$admin->bindValue(':username', $_SESSION['user']);
$admin->execute();
Чтобы получить столбец super_admin
из таблицы admin
, вы должны добавить (после оператора execute()
):
$result = $admin->fetch(PDO::FETCH_ASSOC);
, который будет заполняться (надеюсь, это зависит от схемы таблицы) $result['super_admin']
.
попробуйте следующее:
$sql = "SELECT * FROM admin WHERE username = ?";
$stmt = $CONNECT_TO_DATABASE->prepare($sql);
$stmt->execute(array($_SESSION['user']));
$admin = $stmt->fetch();
if($admin) {
//do something if query returns row(s)
}