2011-05-18 54 views
0

我必須首先讓你知道,雖然我是一名經驗豐富的rails開發人員,但我在PHP和原始SQL方面非常生疏。我正在嘗試使用this tutorialthis tutorial來構建商店搜索器應用程序。我滿足谷歌地圖商店查找器查詢沒有正確返回

這是我使用我的查詢碼(與我自己的數據庫列名)

$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 LAT = 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 2011-05-18 05:31:03

+0

當您將列名換成單引號時,它將選擇您放入的文字字符串。'SELECT'地址'...'返回'地址'。在這種情況下,反引號並不是必須的,你可以直接查詢列名('SELECT Address ...'),它也可以。反引導只是一個很好的做法。 – 2011-05-18 16:06:30