首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂查询上的MySQL语法错误

问复杂查询上的MySQL语法错误
EN

Stack Overflow用户
提问于 2013-05-17 04:57:06
回答 2查看 82关注 0票数 0

对于derp的问题,我很抱歉(我确信它可能是),但是在阅读了手册并通过Stack Overflow找到了这个问题的答案之后,我仍然不确定这个数据库查询出了什么问题。

一些信息:我正在尝试创建一个函数,该函数创建一个围绕另一个邮政编码的半径范围内的所有邮政编码的数组。我使用这个作为参考:http://www.movable-type.co.uk/scripts/latlong-db.html

我实际上已经让这个字符串在我的活动站点上工作了,但是我现在正在运行MySQL 5.5.24的我的本地主机(WAMP)上重新做一些工作。平台是Wordpress。

我理解数据库名称、字段等周围的引号(或缺少引号),我已经使用了几个变体,但都没有运气。

不管怎样,说得够多了。下面是错误:

代码语言:javascript
复制
[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]

下面是代码:

代码语言:javascript
复制
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'

谢谢你的帮助,如果我错过了显而易见的东西,再次道歉。

编辑

谢谢你们!让它起作用了。以下是为他人着想的工作代码:

代码语言:javascript
复制
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`
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-17 05:00:10

您在字段和表名两边使用了单引号'。这是不正确的。您想要使用反引号`。使用引号使MySQL将其解释为字符串。

您还可以将条件和计算放在引号中,这样就可以将它们转换为字符串。

例如,您的内部查询应如下所示:

代码语言:javascript
复制
SELECT `Postcode`, `Lat`, `Lon`
FROM `geo_data`
WHERE `Lat > '$minLat' AND `Lat` < '$maxLat'
AND `Lon`> '$minLon' AND `Lon` < '$maxLon'
票数 3
EN

Stack Overflow用户

发布于 2013-05-17 04:59:52

'geo_data‘是带反引号的字符串geo_data (`)是一个表名

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16597333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档