$ _SESSION在postgres查询中不起作用

时间:2015-10-24 22:37:49

标签: php postgresql session pg-query

在解决了所有问题后,我没有更多的想法,来到这里寻求帮助。

我的$ _SESSION在postgres的SELECT中没有工作,但是当我这样说时没关系:

  

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

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

编辑:尝试将值设置为$ _GET并仍然存在同样的问题。我不知道为什么会发生这种情况,因为我之前已经这样做了......而GET和SESSION都显示了它的值,如果回应它们。

1 个答案:

答案 0 :(得分:0)

猜测,因为你实际上没有显示代码,但是:你几乎肯定使用单引号字符串并期望字符串插值工作,例如。

pg_query('SELECT * FROM mytable WHERE sess = $_SESSION');

$dbh->exec('SELECT * FROM mytable WHERE sess = $_SESSION')

如果是这样的话:string interpolation in PHP is performed only on double-quoted strings。更重要的是,不要在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();

请参阅: