Получить значение из select в pdo mysql для if statement [duplicate]

! будет отрицать (наоборот) то, что вы ожидаете в результате, т. е. если у вас есть

  var boy = true;  undefined boy true! boy false  

, когда вы вызываете boy , ваш результат будет true , но в тот момент, когда вы добавляете ! при вызове boy , т. е. ! boy , ваш результат будет false . Другими словами, вы имеете в виду NotBoy, но на этот раз это в основном логический результат: либо true , либо false .

Это то же самое, что происходит с выражение ! function () {} (); , работает только function () {} (); сообщит вам об ошибке, но добавит ! прямо перед вашей функцией function () {} (); делает ее противоположной функции () {} (); , которая должна вернуть вас правда . Пример можно увидеть ниже:

  function () {} ();  Инструкция SyntaxError: function требует имя! Function () {} ();  true  
1
задан Stony 2 April 2013 в 09:21
поделиться

2 ответа

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'].

4
ответ дан Shoe 15 August 2018 в 14:38
поделиться
  • 1
    Что делать, если я использую запрос вместо подготовки? Я просто изменил его, и у меня возникла фатальная ошибка mysql, Fatal error: Uncaught exception «PDOException» с сообщением «SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец« jony »в« where clause »в C: \ xampp \ htdocs\recover \ admin \ create.php: 36 Трассировка стека: # 0 C: \ xampp \ htdocs\recover \ admin \ create.php (36): PDO- & gt; query ('SELECT * FROM a ...' ) # 1 {main}, брошенный в C: \ xampp \ htdocs\recover \ admin \ create.php в строке 36 – Jony Kale 2 April 2013 в 09:30
  • 2
    Я просто изменил & quot ;. $ _ SESSION ['user']. & Quot; на '& quot;. $ _ SESSION [' user ']. & quot; и это сработало. – Jony Kale 2 April 2013 в 09:33
  • 3
    @downvoter ума, чтобы объяснить вниз голос? – Shoe 2 April 2013 в 10:39

попробуйте следующее:

$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)
}
2
ответ дан jerjer 15 August 2018 в 14:38
поделиться
  • 1
    Что вы подразумеваете под ($ admin)? Все, что я хочу сделать, - это получить данные из указанной строки пользователя. – Jony Kale 2 April 2013 в 09:31
  • 2
    если администратор просто отпадает, если ваш запрос не возвращает какую-либо строку, так что $ admin [somefield] не вернет ошибку – jerjer 2 April 2013 в 09:33
Другие вопросы по тегам:

Похожие вопросы: