Php 查询中的 postgresql 变量

Php postgresql variables in a 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,这感觉是正确的方向,但我需要一些帮助。我怎样才能让它工作?

问题是变量周围的双引号。 Postgres 将其理解为 "database object" 名称,在这部分查询中,一个列。为避免它,请尝试使用:

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

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

我从未使用过 pg_connect,但我认为您需要这样的东西:

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


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