【发布时间】:2013-02-16 13:58:38
【问题描述】:
我尝试对我附近的位置列表进行 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 的解决方案。
非常感谢
伊沃
【问题讨论】:
-
看起来
$distance_formula变量没有被评估并且在您的查询中显示为“$distance_formula”而不是 SQL 公式 (6371 * ACOS...)。你能把你查询数据库的地方贴出来吗? -
呵呵,我这样查询我的数据库:return $this->query($sql);这就是它在 cakephp 中与其他查询一起工作的方式。我认为问题不在于我查询我的数据库。
-
只需去掉 distance_formula 前面的 $ 符号并运行它
-
哈!谢谢!我解决了这个问题!我使用 sprint_f() 将 php 变量插入到 SQL 字符串中。我不知道为什么这应该更好,但它就是这样工作的!
标签: mysql cakephp-2.0