Php mysql pdo距离经纬度

Php mysql pdo距离经纬度,php,mysql,pdo,latitude-longitude,Php,Mysql,Pdo,Latitude Longitude,我有一个用户表,每个用户的地理位置存储为一对经度和纬度 我想显示一个圆形区域内的所有用户,具有已知的中心和半径。以下代码是我目前掌握的代码,但没有给出正确答案: $lat = 54.635214; $lon = -3.551677; $bounding_distance = 10; $sql = "SELECT * ,((ACOS(SIN(:find_lat * PI() / 180) * SIN(`latitude` * PI() / 180) + COS(:find

我有一个用户表,每个用户的地理位置存储为一对经度和纬度

我想显示一个圆形区域内的所有用户,具有已知的中心和半径。以下代码是我目前掌握的代码,但没有给出正确答案:

$lat = 54.635214;
$lon = -3.551677;
$bounding_distance = 10;

$sql = "SELECT *
            ,((ACOS(SIN(:find_lat * PI() / 180) * SIN(`latitude` * PI() / 180) + COS(:find_lat * PI() / 180) * COS(`latitude` * PI() / 180) * COS((:find_long - `longitude`) * PI() / 180)) * 180 / PI()) * 60 * 1.15078) AS `distance` 
            FROM `user` 
            WHERE
                `latitude` BETWEEN (:find_lat - :bounding_distance) AND (:find_lat + :bounding_distance)
                AND `longitude` BETWEEN (:find_long - :bounding_distance) AND (:find_long + :bounding_distance)
                AND `distance` <= 100
            ORDER BY `distance` ASC"; 

$stmt = $this->pdo->prepare($sql);

$stmt->bindValue(':find_lat', $lat);
$stmt->bindValue(':find_long', $lon);
$stmt->bindValue(':bounding_distance', $bounding_distance);

$stmt->execute();
return $stmt->fetchAll();

不工作到底意味着什么?同样值得注意的是,如果你做了很多GIS类的工作,那么博士后和研究生是很难被击败的。MySQL对这方面的支持是次优的。它没有显示任何结果,我没有收到任何错误或任何东西。你打开了吗?查询是否独立于带有测试数据的PHP运行?这是正确的公式吗?首先你需要边界框吗?结果太多了。如果执行$bounding\u,则距离应大于距离。