我正在尝试进行查询,该查询为我提供了按距当前位置多远排序的商店列表。我正在使用 php 并将 MySQL 用于我的数据库。
为了计算 2 家商店之间的距离,我使用 2 家商店的经度和纬度并从中得出距离。这包含在自定义函数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;
}