我的$ _SESSION在postgres的SELECT中没有工作,但是当我这样说时没关系:
您选择的类型是:
<?php echo $_SESSION[genero];?>
。
但在我的pg_query中,它不起作用,我知道它是$ _SESSION,因为如果我更改de $ _SESSION的值,那就没关系。有谁知道如何回答这个问题?
编辑:尝试将值设置为$ _GET并仍然存在同样的问题。我不知道为什么会发生这种情况,因为我之前已经这样做了......而GET和SESSION都显示了它的值,如果回应它们。
答案 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();
请参阅: