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

时间:2017-10-28 08:57:15

标签: postgis postgresql-9.4 php-5.6

我是postgresql / postgis的新手,无法解决此问题。我有lat long值,我通过click事件检索并使用

进行拆分
lonlat.split(",");

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

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

致命错误:带有消息'SQLSTATE [42601]的未捕获异常'PDOException':语法错误:7错误:输入结束时的语法错误LINE 1:... om,GeomFromText('POINT()',4326)) as yes_within来自公众。 ^'在C:\ xampp \ htdocs ...堆栈跟踪:#0 PDOStatement->执行()#1 {main}在第22行的C:\ xampp \ htdocs ...中抛出

1 个答案:

答案 0 :(得分:0)

从错误

  

致命错误:带有消息'SQLSTATE [42601]的未捕获异常'PDOException':语法错误:7错误:输入结束时的语法错误LINE 1:... om,GeomFromText(' POINT()',4326))as yes_within from public。 ^'在C:\ xampp \ htdocs ...堆栈跟踪:#0 PDOStatement->执行()#1 {main}在第22行的C:\ xampp \ htdocs ...中抛出

这意味着即使你认为你是从分裂中获得它们,你也不会从分裂中获得它们。你正在连接一个空字符串。问题不在PostgreSQL中。

除此之外,不要那样构建一个点。而是使用,

ST_MakePoint(long,lat)::geography

这会创建一个geography而非一个geometry,并且它会在没有文本解析的情况下完成。