0
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) 
* cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin(radians(lat)) ) ) AS distance 
FROM markers 
HAVING distance < 25 
ORDER BY distance 
LIMIT 0 , 20;

MySQL Great Circle Distance (Haversine formula)

I am currently trying to use this query in my php code but I am unsure on how successfully implement it in a mysqli_query.

    $query = "SELECT FROM MyTable, (3959 * acos(cos(radians(37)) * cos(radians(TableLat)) * cos(radians(TableLng) - radians(-122)) + sin(radians(37)) * sin(radians(TableLat)))) 
    AS distance 
    HAVING distance < 25 
    ORDER BY distance 
    LIMIT 0 , 20";

    $stmt = mysqli_query($connectionInfo->conn, $query);

    if (!$stmt)
    {
        echo $connectionInfo->conn->error;
    }

This obviously does not work because all of the math related stuff are nested inside a "". How do i bypass this when trying to create a query?

Error message:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'FROM MyTable, (3959 * acos(cos(radians(37)) * cos(radians(Lat)) * cos(radi' at line 1

Lelio Faieta
  • 6,457
  • 7
  • 40
  • 74
Carlos Rodrigez
  • 1,347
  • 1
  • 15
  • 32

1 Answers1

0

You have an error in your syntax the FROM is before the field:

$query = "SELECT (3959 * acos(cos(radians(37)) * cos(radians(TableLat)) * cos(radians(TableLng) - radians(-122)) + sin(radians(37)) * sin(radians(TableLat)))) 
AS distance 
FROM MyTable
HAVING distance < 25 
ORDER BY distance 
LIMIT 0 , 20";
A. Colonna
  • 852
  • 7
  • 10