下面是我的查询:

select * 
  from (select *, 3956 * 2 * ASIN(SQRT(POWER(SIN(RADIANS(45.5200077 - lat)/ 2), 2) + COS(RADIANS(45.5200077)) * COS(RADIANS(lat)) * POWER(SIN(RADIANS(-122.6942014 - lng)/2),2))) AS distance 
          from stops 
      order by distance, route asc) as p 
group by route, dir 
order by distance asc 
   limit 10

这在命令行和在phpMyAdmin工作正常。我使用的是 Dbslayer 通过我的JavaScript后端连接到MySQL,并且请求返回1064错误。

下面是编码的DBSlayer请求字符串:

  

HTTP://本地主机:9090 /分贝 {%22SQL%22:%22select%20 * %20from%20%28select%20 *,%203956 20%*%202%20%*%20ASIN%28SQRT%28POWER%28SIN%28RADIANS%2845.5200077 20-%20lat%29/202%29%,%202%29% 20 +%20COS%28RADIANS%2845.5200077%29%29%20 *%20COS%28RADIANS%28lat%29%29%20 *%20POWER%28SIN%28RADIANS%28-122.6942014%20-%20lng%29/2%29 2%29%29%29%20AS%20distance%20from%20%60stops%60%20order%20by%20%60distance%60,%20%60route%60%20asc%29%20AS%20P%20group%20by%20 %60route%60,%20%60dir%60%20order%20by%20%60distance%60%20asc%20limit%2010%22}

和响应:

  

{“MYSQL_ERRNO”:1064,“MYSQL_ERROR”:“您的SQL语法错误;检查手册对应到你的MySQL服务器版本正确的语法使用近“(RADIANS(45.5200077))* COS (RADIANS(LAT))*功率(SIN(RADIANS(-122.6942014 - LNG”在行1" , “服务器”: “TriMet公司”}

谢谢!

有帮助吗?

解决方案

您的问题的一个可能的直接来源是URL编码。我看到加号发送原样。这是危险的,因为+用来指的空格的传统编码。 http://www.faqs.org/rfcs/rfc1738

其他提示

...distance%60%20asc%20...

你是如何逃脱的SQL?像你看上去就错过了“路线”,所以上面写着“距离,ASC”。像看起来从那里进入下坡。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top