我在本地服務器上有一個MySQL表。該表格包含用戶標記的地點的緯度和經度。我試圖讓所有身份標識的人在距離提供的經度和緯度1公里內標記他們的位置。但我的結果並不是預期的。如何從提供的緯度和長度從MySql獲取半徑範圍內的所有結果查詢
表:map_locations
id user_id lat lng place_name
1 1 28.584688 77.31593 Sec 2, Noida
2 2 28.596026 77.314494 Sec 7, Noida
3 5 28.579876 77.356131 Sec 35, Noida
4 1 28.516831 77.487405 Surajpur, Greater Noida
5 1 28.631451 77.216667 Connaught Place, New Delhi
6 2 19.098003 72.83407 Juhu Airport, Mumbai
,這裏是PHP腳本
$lat = '28.596026';
$long = '77.314494';
$query = "SELECT id,
(6371 * acos(cos(radians($lat)) * cos(radians('lat')) *
cos(radians('lng') - radians($long)) +
sin(radians($lat)) * sin(radians('lat')))
) as distance
FROM map_locations
HAVING 'distance' < 1
ORDER BY id
LIMIT 25";
$_res = mysqli_query($conn, $query) or die('Error query: '.$query);
$detail = array();
$i=0;
while($row = $_res->fetch_assoc()) {
$detail[$i] = $row['id'];
$i++;
}
print_r($detail);
結果:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)
查詢返回表中的所有記錄。任何人都可以讓我知道查詢中有什麼問題嗎?
是否有可能,所有記錄都位於同一位置或1公里內,因爲您的查詢看起來很完美 –
請考慮做一個行計數,以便知道是否有任何結果。 – Script47
@JayminNoob不可能,所有記錄都不在1公里以內。 –