После того, как все это исправить, у меня больше нет идей, и я пришел сюда, чтобы найти помощь.
Мой $ _SESSION не работает внутри SELECT postgres, но когда я ставлю вот так, все в порядке:
Жанр, который вы выбрали:
<?php echo $_SESSION[genero];?>
,
Но внутри моего pg_query это не работает, и я знаю, что это $ _SESSION, потому что если я изменю de $ _SESSION для его значения, то все в порядке. Кто-нибудь знает, как ответить на этот вопрос?
РЕДАКТИРОВАТЬ: попытался поставить значение $ _GET и все еще та же проблема. Я не знаю, почему это происходит, потому что я уже делал это раньше … И GET, и SESSION показывают значение, если их повторяют.
Догадываюсь, что на самом деле вы не показывали свой код, но: вы почти наверняка используете строки в одинарных кавычках и ожидаете, что сработает интерполяция строк, например,
pg_query('SELECT * FROM mytable WHERE sess = $_SESSION');
или же
$dbh->exec('SELECT * FROM mytable WHERE sess = $_SESSION')
Если так: интерполяция строк в PHP выполняется только для строк в двойных кавычках. Что еще более важно, не используйте интерполяцию строк в SQL, если вы не абсолютно уверен значение не может быть установлено или изменено пользователем. Даже тогда, желательно, нет. Используйте параметризованные запросы, например
pg_query_params('SELECT * FROM mytable WHERE sess = $1', array($_SESSION));
или же
$stmt = $dbh->prepare('SELECT * FROM mytable WHERE sess = :sess');
$stmt->bindParam(':sess', $_SESSION);
$stmt->execute();
Увидеть:
Других решений пока нет …