很抱歉这个derp问题(我确信它可能是),但是在阅读手册并通过Stack Overflow回答这个问题之后,我仍然不确定这个数据库查询有什么问题。
一些信息:我正在尝试创建一个函数,该函数在另一个邮政编码周围的半径内创建所有邮政编码的数组。我用这个作为参考:http ://www.movable-type.co.uk/scripts/latlong-db.html
我实际上已经在我的实时站点上使用了这个字符串,但是我现在正在运行 MySQL 5.5.24 的本地主机 (WAMP) 上重做一些工作。该平台是Wordpress。
我了解数据库名称、字段等周围的引号(或缺少引号),并且我使用了几种变体,但一点运气都没有。
无论如何,足够的谈话。这是错误:
[You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''geo_data' WHERE 'Lat>44.566' AND 'Lat<44.566' AND 'Lon>-109.208' AND 'L' at line 4]
这是代码:
SELECT 'Postcode', 'Lat', 'Lon', 'acos(sin($lat)*sin(radians(Lat)) + cos($lat)*cos(radians(Lat))*cos(radians(Lon)-$lon))*$R' AS D
FROM (
SELECT 'Postcode', 'Lat', 'Lon'
FROM 'geo_data'
WHERE 'Lat>$minLat' AND 'Lat<$maxLat'
AND 'Lon>$minLon' AND 'Lon<$maxLon'
)
AS 'firstcut'
WHERE 'acos(sin($lat)*sin(radians(Lat)) + cos($lat)*cos(radians(Lat))*cos(radians(Lon)-$lon))*$R' < '$rad'
ORDER BY 'D'
感谢您的帮助,如果我错过了明显的内容,再次抱歉。
编辑
多谢你们!得到它的工作。这是为了他人利益的工作代码:
SELECT `Postcode`, `Lat`, `Lon`, acos(sin($lat)*sin(radians(`Lat`)) + cos($lat)*cos(radians(`Lat`))*cos(radians(`Lon`)-$lon))*$R AS `D`
FROM (
SELECT `Postcode`, `Lat`, `Lon`
FROM `geo_data`
WHERE `Lat`>'$minLat' AND `Lat`<'$maxLat'
AND `Lon`>'$minLon' AND `Lon`<'$maxLon'
)
AS `firstcut`
WHERE acos(sin($lat)*sin(radians(`Lat`)) + cos($lat)*cos(radians(`Lat`))*cos(radians(`Lon`)-$lon))*$R < '$rad'
ORDER BY `D`