$ _SESSION не работает внутри запроса postgres

После того, как все это исправить, у меня больше нет идей, и я пришел сюда, чтобы найти помощь.

Мой $ _SESSION не работает внутри SELECT postgres, но когда я ставлю вот так, все в порядке:

Жанр, который вы выбрали: <?php echo $_SESSION[genero];?>,

Но внутри моего pg_query это не работает, и я знаю, что это $ _SESSION, потому что если я изменю de $ _SESSION для его значения, то все в порядке. Кто-нибудь знает, как ответить на этот вопрос?

РЕДАКТИРОВАТЬ: попытался поставить значение $ _GET и все еще та же проблема. Я не знаю, почему это происходит, потому что я уже делал это раньше … И GET, и SESSION показывают значение, если их повторяют.

0

Решение

Догадываюсь, что на самом деле вы не показывали свой код, но: вы почти наверняка используете строки в одинарных кавычках и ожидаете, что сработает интерполяция строк, например,

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();

Увидеть:

0

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

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

По вопросам рекламы [email protected]