致命错误:未捕获的异常'PDOException'消息"SQLSTATE[42601]:



我是postgresql/postgis的新手,无法解决这个问题。我有经纬度长值,我通过点击事件检索并使用

lonlat.split(",");

但是当我将它们传递到以下查询中时,我收到语法错误。

$sql1=$conn->prepare("select id,ST_Contains(geom,GeomFromText(4326,'POINT(".$lon." ".$lat.")')) as yes_within from public.".$layername);    
$sql1->execute();
致命错误:

未捕获的异常"PDOException",消息为"SQLSTATE[42601]:语法错误:7 错误:输入第 1 行末尾的语法错误:...om,GeomFromText('POINT( )',4326)) 作为公共yes_within。^' in C:\xampp\htdocs...堆栈跟踪: #0 PDOStatement->execute() #1 {main} 在 C:\xampp\htdocs...在第 22 行

从错误

致命错误:

未捕获的异常"PDOException",消息为"SQLSTATE[42601]:语法错误:7 错误:输入第 1 行末尾的语法错误:...om,GeomFromText('POINT( )',4326)) 作为公共yes_within。^' in C:\xampp\htdocs...堆栈跟踪: #0 PDOStatement->execute() #1 {main} 在 C:\xampp\htdocs...在第 22 行

这意味着,即使你认为你从分裂中得到它们

,你也不是从分裂中得到它们。您正在连接一个空字符串。问题不在于PostgreSQL。

除此之外,不要以这种方式构建一个点。而是使用,

ST_MakePoint(long,lat)::geography

它创建一个geography而不是一个geometry并且它不需要文本解析。

最新更新