2011-05-18 3 views
0

Я должен сначала сообщить вам, что, хотя я опытный разработчик рельсов, я довольно ржавый на PHP и необработанном SQL. Я пытаюсь создать приложение для поиска магазина, используя this tutorial и this tutorial. Я встречаюсьЗапрос поисковой системы Google Maps Store не возвращается должным образом

Это код, я использую для моего запроса (с собственными именами столбцов базы данных)

$user_lat = $_GET["lat"]; 
$user_lng = $_GET["lng"]; 
$radius = $_GET["radius"]; 

$query = "SELECT 'Address','LocName','Latitude','Longitude', (3959 * acos(cos(radians($user_lat)) * cos(radians(Latitude)) * cos(radians(Longitude) - radians($user_lng)) + sin(radians($user_lat)) * sin(radians(Latitude)))) AS distance FROM Locations ORDER BY distance"; 

И я возвращаю результаты с этим (как тест):

$result = mysql_query($query); 
if (!$result) { 
    die("Invalid query: " . mysql_error()); 
} 

$num=mysql_numrows($result); 

mysql_close(); 
?> 
<table border="0" cellspacing="2" cellpadding="2"> 
<tr> 
<th><font face="Arial, Helvetica, sans-serif">Name</font></th> 
<th><font face="Arial, Helvetica, sans-serif">Distance</font></th> 
<th><font face="Arial, Helvetica, sans-serif">Address</font></th> 
</tr> 

<?php 
while ($row = mysql_fetch_assoc($result)) { 
$f1=mysql_result($result,$i,"LocName"); 
$f2=mysql_result($result,$i,"distance"); 
$f3=mysql_result($result,$i,"Address"); 
?> 

<tr> 
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f1; ?></font></td> 
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f2 ?></font></td> 
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td> 
</tr> 

<?php 
$i++; 
} 
?> 

Однако я получаю следующие результаты, когда я получил идти? findstore.php лат = 33,98 & LNG = -118,42

Name Distance Address 
LocName  0.65415504532801 Address 
LocName  0.65415504532801 Address 
LocName  0.666819627384179 Address 
LocName  0.923277344110443 Address 
LocName  2.32751232712236 Address 
LocName  2.33924574433009 Address 

и т. Д.

Очевидно, что расстояние вычисляется правильно, но у меня возникают проблемы с получением имени адреса и местоположения для каждого.

Что я делаю неправильно?

Спасибо!

ответ

1

Попробуйте заменить одиночные кавычки в своем запросе обратными окнами.

т.е .:

$query = "SELECT `Address`,`LocName`,`Latitude`,`Longitude`, (3959 * acos(cos(radians($user_lat)) * cos(radians(Latitude)) * cos(radians(Longitude) - radians($user_lng)) + sin(radians($user_lat)) * sin(radians(Latitude)))) AS distance FROM Locations ORDER BY distance"; 
+0

велика, что полностью работает! Почему это? – goddamnyouryan

+0

Когда вы завершаете имена столбцов в одинарных кавычках, вы выбираете строку, в которую вы вставляете. 'SELECT 'Address' ...' возвращает 'Address'. В этом случае обратные элементы не нужны, вы можете просто запросить имя столбца без каких-либо изменений ('SELECT Address ...'), и он будет работать. Обратные шаги - это просто хорошая практика. –

Смежные вопросы