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));
我正在尝试为以下内容获取正确的语法。在这种情况下 $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));