Я новичок в 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
Я пытался удалить одиночные парены вокруг, но это дает следующую ошибку:
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. Любые рекомендации приветствуются. Благодарю.
использование ST_MakePoint, который принимает числовые данные и может использоваться для параметризованных запросов. $query
должен выглядеть так:
INSERT INTO userloc (email, latitude, longitude, the_geom)
VALUES($1, $2, $3, ST_SetSRID(ST_MakePoint($3, $2), 4326));
Других решений пока нет …