Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选择距离内的MySQL结果(以英里为单位);错误结果_Php_Mysql_Sql_Where Clause_Spatial - Fatal编程技术网

Php 选择距离内的MySQL结果(以英里为单位);错误结果

Php 选择距离内的MySQL结果(以英里为单位);错误结果,php,mysql,sql,where-clause,spatial,Php,Mysql,Sql,Where Clause,Spatial,晚上, 我有一个PHP脚本,它正在选择结果并尝试根据以英里为单位的特定距离过滤这些结果。我有一个结果数据库,其中包括从谷歌地图收集的经度和纬度数据 我的查询当前看起来像这样 $stmt=$pdo->prepare(“选择*, ((acos(sin(“$latitude”*pi()/180)) *sin((纬度*pi()/180)) +cos((“$latitude”*pi()/180)) *cos((纬度*pi()/180)) *cos(((“$longitude'-longitude)*pi(

晚上,

我有一个PHP脚本,它正在选择结果并尝试根据以英里为单位的特定距离过滤这些结果。我有一个结果数据库,其中包括从谷歌地图收集的经度和纬度数据

我的查询当前看起来像这样

$stmt=$pdo->prepare(“选择*,
((acos(sin(“$latitude”*pi()/180))
*sin((纬度*pi()/180))
+cos((“$latitude”*pi()/180))
*cos((纬度*pi()/180))
*cos(((“$longitude'-longitude)*pi()/180)))
*180/pi())*60*1.1515)作为距离
从目录

HAVING distanceMySQL从5.7版开始就支持空间函数,这可以减轻您键入如此复杂公式的负担。例如,您可以使用like so:

选择d.*,
st_距离_球体(点(纬度、经度)、点(纬度、经度))作为距离
从目录d

having distanceMySQL从5.7版开始就支持空间函数,这可以减轻您键入如此复杂公式的负担。例如,您可以使用like so:

选择d.*,
st_距离_球体(点(纬度、经度)、点(纬度、经度))作为距离
从目录d

还有距离,请注意查询中的SQL注入。@AWFULSALROCK您确定您的长acos sin函数是正确的,它看起来非常复杂,如果您不小心弄错了公式也不会奇怪……另外,请注意查询中的SQL注入。@AWFULSALROCK您确定您的长acos sin函数是正确的,它看起来非常复杂吗,如果你不小心弄错了公式,那就不奇怪了。。。
select d.*, 
    st_distance_sphere(point(latitude, longitude), point(:latitude, :longitude)) as distance
from directory d
having distance <=  :distance * 1609.344
order by distance