2013-02-16 10 views
0

Я пытаюсь выполнить MySQL-запрос со списком местоположений рядом со мной (упорядочен с ближайшим первым). Я понятия не имел, как это сделать. Я нашел этот интересный пост: http://funkjedi.com/technology/308-search-using-geolocation-data-in-mysql/поисковый запрос геолокации с 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.

Большое спасибо

Иво

+0

похоже, что 'переменная $ distance_formula' не вычисляется и отображается как«$ distance_formula»вместо формулы SQL (6371 * ACOS ...) в вашем запросе. Можете ли вы разместить бит, где вы запрашиваете свою базу данных? – chrki

+0

Да, я запрашиваю мою базу данных следующим образом: return $ this-> query ($ sql); Так он работает в cakephp с другими запросами. Я думаю, проблема не в том, что я запрашиваю свою базу данных. – FishWave

+0

просто удалите знак $ перед distance_formula и запустите его – Vineet1982

ответ

0

Я думаю, что должно быть ошибка окон и Юникс формат файлов или несколько раз пример есть некоторые вопросы, письма и, таким образом, просим Вас изменить команду немного и написать команду как:

$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"; 
Смежные вопросы