我试图让一个查询,它给了我一个按当前位置离他们有多远排序的商店列表。我正在使用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上创建该函数。 –