How to get all the results within radius from provided lat and long from MySql Query

Viewed 2643

I have a MySQL table on my local server. The table includes latitude and longitude for places tagged by the users. I am trying to get all the id's who's tag their places within 1 kilometres from provided latitude and longitude. But my result is not expected.

Table: 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

and here is PHP Script

$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);

Result:

Array
(
   [0] => 1
   [1] => 2
   [2] => 3
   [3] => 4
   [4] => 5
   [5] => 6
)

Query returns all the records from the table. Can anyone please let me know what's wrong in the query?

2 Answers
Related