0

经过一切修复后,我没有更多的想法,来到这里寻求帮助。

我的 $_SESSION 不能在 SELECT 的 postgres 中工作,但是当我这样输入时,就可以了:

您选择的流派是:<?php echo $_SESSION[genero];?>

但是在我的 pg_query 中,它不起作用,我知道它是 $_SESSION,因为如果我将 de $_SESSION 更改为它的值,那就没问题了。有谁知道如何回答这个问题?

编辑:尝试将值放在 $_GET 上,但仍然是同样的问题。我不知道为什么会这样,因为我之前已经这样做过一次......如果回显它们,GET 和 SESSION 都会显示值。

4

1 回答 1

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

看:

于 2015-10-24T23:51:18.070 回答