使用mysql进行地理定位搜索查询

时间:2013-02-16 13:58:38

标签: mysql cakephp-2.0

我尝试用我附近的位置列表进行MySQL查询(以最近的位置排序)。我不知道该怎么做。我找到了这篇有趣的帖子:http://funkjedi.com/technology/308-search-using-geolocation-data-in-mysql/

一切都清晰地告诉我。但查询不起作用。我做了以下SQL查询:

SELECT *, ($distance_formula) AS distance FROM restaurants 
    WHERE (geolatitude BETWEEN $lat_b1 AND $lat_b2) 
    AND (geolongitude BETWEEN $lng_b1 AND $lng_b2) 
    HAVING distance < $radius ORDER BY distance ASC

我得到的错误如下:

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column '$distance_formula' in 'field list'

关键是,$ distance_formula是在脚本中创建的,而不是字段列表,这是正确的。但是我应该如何做到这一点,MySQL知道这是执行而且它不是一个字段?

如果您有任何其他帮助或其他解决方案(来自绿色),我会非常高兴。最后,我需要一个cakephp的解决方案。

非常感谢

伊沃

1 个答案:

答案 0 :(得分:0)

我认为必须存在windows和unix格式文件的错误,或者有时候这个例子有一些写入问题,因此请求你稍微更改命令并将命令写为:

 $sql = "SELECT *, (" . $distance_formula . ") AS distance FROM listings WHERE (latitude BETWEEN " . $lat_b1 . " AND " . $lat_b2 . ") AND ( longitude BETWEEN " . $lng_b1 . " AND . " $lng_b2 . ") HAVING distance < " . $radius . "ORDER BY distance ASC";