查询中的Php postgresql变量

时间:2017-04-17 20:24:57

标签: php postgresql pg-query

我试图为以下内容获取正确的语法。在这种情况下$ post_pub = 1

$sql='SELECT "Publications"."Pub_ID", "Publications"."ART_TITEL" FROM "Publications" where "Pub_ID"="$post_pub"';

Php抛出错误:列" $ post_pub"不存在

我偶然发现了pg_query_params,感觉这是正确的方向,但我需要一些帮助。我怎样才能让它发挥作用?

2 个答案:

答案 0 :(得分:2)

我从未使用过pg_connect,但我觉得你需要这样的东西:

$sql='SELECT "Publications"."Pub_ID", "Publications"."ART_TITEL" 
FROM "Publications" 
where "Pub_ID"=$1 ';


$result = pg_query_params($dbconn, $sql, array($post_pub));

答案 1 :(得分:0)

问题是围绕变量的双引号。 Postgres将其理解为“数据库对象”名称,在此部分查询中,列为一列。要避免它,请尝试使用:

$sql='SELECT "Publications"."Pub_ID", "Publications"."ART_TITEL" FROM "Publications" where "Pub_ID"='."$post_pub";

还考虑转向PDO - 这种用法是对sql注入的直接邀请。例如,如果用户有足够的权限,将$post_pub设置为0 or (delete from Publications)"将删除所有数据。