如何在pg_query_params调用中使用ST_GeomFromText('Point($ 1 $ 2)',4326)

时间:2015-01-16 16:39:16

标签: php postgresql postgis

我是postgresql / postgis的新手,想通过pg_query_param调用将几何点类型插入到我的数据库中。我尝试了以下方法:

$query = "INSERT INTO userloc (email, latitude, longitude, the_geom) VALUES($1, $2, $3, ST_GeomFromText('POINT($3 $2)', 4326))";
$rs = pg_query_params($con, $query, array('%$#^@@gmail.com', 0, 0));

但这会产生错误:

Warning: pg_query_params(): Query failed: ERROR: parse error - invalid geometry HINT: "POINT($3" <-- parse error at position 8 within geometry in /var/www/html/signup.php on line 26

我尝试从周围移除单个parens,但这会出现此错误:

Warning: pg_query_params(): Query failed: ERROR: syntax error at or near "$2" LINE 1: ...geom) VALUES($1, $2, $3, ST_GeomFromText(POINT($3 $2), 4326)... ^ in /var/www/html/signup.php on line 26

我意识到我可以简单地插入纬度和经度,然后单独使用这些列来生成the_geom列,但必须有一种方法可以在一个命令中执行此操作,同时仍然可以使用此params函数而不是通常的pg_query。任何建议表示赞赏。感谢。

1 个答案:

答案 0 :(得分:3)

使用ST_MakePoint,它接受​​数字输入,可用于参数化查询。 $query应如下所示:

INSERT INTO userloc (email, latitude, longitude, the_geom)
VALUES($1, $2, $3, ST_SetSRID(ST_MakePoint($3, $2), 4326));