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

How to use ST_GeomFromText('Point($1 $2)', 4326) inside pg_query_params call

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

$query = "INSERT INTO userloc (email, latitude, longitude, the_geom) VALUES(, , , ST_GeomFromText('POINT( )', 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(" <-- parse error at position 8 within geometry in /var/www/html/signup.php on line 26

我尝试从点周围移除单括号,但出现此错误:

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

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

使用 ST_MakePoint,它采用数字输入,可用于参数化查询。 $query 应该是这样的:

INSERT INTO userloc (email, latitude, longitude, the_geom)
VALUES(, , , ST_SetSRID(ST_MakePoint(, ), 4326));