Я хочу проверить, содержит ли какой-либо столбец указателя пользователя значение, превышающее 0.
проблема
Выполняя запрос и выполняя его , я получаю эту ошибку:
Fatal error: Cannot use object of type PDOStatement as array in C:\xampp\htdocs\recover\admin\create.php on line 40 Мой код (запрос + выполнить):
 if (isset($_SESSION['user'])) { $admin = $CONNECT_TO_DATABASE->prepare("SELECT * FROM admin WHERE username = :username"); $admin->bindValue(':username', $_SESSION['user']); $admin->execute(); 
Линия ошибки (40):
 if ($settings['create_admins'] > 0 || $admin['super_admin'] > 0 ) { 
Вопрос:
Почему я получаю эту ошибку? Как это исправить?
Я попытался сделать это:
 $admin = $CONNECT_TO_DATABASE->prepare("SELECT * FROM admin WHERE username = :username"); $admin = $admin->bindValue(':username', $_SESSION['user']); $admin = $admin->execute(); 
и получить еще одну ошибку:
 Fatal error: Call to a member function execute() on a non-object in C:\xampp\htdocs\recover\admin\create.php on line 38 
Благодаря!
EDIT: Мне нужен объект -> fetch, но я только что сделал это и избавился от ошибок. Но это не влияет? Я имею в виду, что я повторяю эту строку, и это дает мне нуль (ничего). Зачем?
 $admin = $CONNECT_TO_DATABASE->prepare("SELECT * FROM admin WHERE username = ".$_SESSION['user'].""); $admin = $admin->fetch(); 
        
    Из:
 $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) }