我試圖讓一個查詢,它給了我一個按當前位置離他們有多遠排序的商店列表。我正在使用php,並使用MySQL作爲我的數據庫。在select子句中使用自定義函數MySQL
爲了計算兩家商店之間的距離,我使用了兩家商店的經度和緯度,並從中得出距離。這包含在一個自定義函數distance($lat1, $lng1, $lat2, $lng2)
中。該功能的結果是km
中的距離。
我想用這個函數在我的查詢結果中創建一個額外的列,這樣我就可以將所有商店從我當前位置最後面的商店排序到離我目前位置最遠的商店。這兩個函數都在同一個文件中聲明,但我沒有得到任何結果。通過聲明它的方式,可以在SELECT子句中調用一個函數嗎?
function getSortedStores($cur_lat, $cur_lng)
{
$query = "SELECT Store.ID, Store.Name, distance($cur_lat, $cur_lng, Address.Latitude, Address.Longitude) AS Distance FROM Store INNER JOIN Address ON Store.ID=Address.StoreID ORDER BY Distance";
$result = mysql_query($query);
return $result;
}
function distance($lat1, $lng1, $lat2, $lng2)
{
$toRadians = M_PI/180;
$lat1 *= $toRadians;
$lng1 *= $toRadians;
$lat2 *= $toRadians;
$lng2 *= $toRadians;
$r = 6371; // mean radius of Earth in km
$dlat = $lat2 - $lat1;
$dlng = $lng2 - $lng1;
$a = sin($dlat/2) * sin($dlat/2) + cos($lat1) * cos($lat2) * sin($dlng/2) * sin($dlng/2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
$km = $r * $c;
$km = round($km, 1);
return $km;
}
首先,PHP和SQL是由不同計算機中不同解釋器運行的不同語言。 –
你不能混合使用php和mysql..you必須使用MySql或PHP進行計算後,你已經提取了結果..看看[這裏](http://stackoverflow.com/questions/5217819/effectively-selecting - 最近距離 - 從數據庫記錄/ 5217888#5217888)如何在MySql中有效地執行此操作 – bitWorking
好吧,假設您知道您的代碼是錯誤的。你可以在mysql上創建該函數。 –