Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.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
使用mysql和php计算两个位置之间的距离_Php_Mysql - Fatal编程技术网

使用mysql和php计算两个位置之间的距离

使用mysql和php计算两个位置之间的距离,php,mysql,Php,Mysql,我正在使用MIT AppInventor开发一个应用程序。从应用程序中,我将当前位置纬度和经度发送到php。我有一个mysql表,它存储完整的地址,包括lat和long。这是问题所在 $sSQL= "SELECT *,(((acos(sin((".$lat1."*pi()/180)) * sin((latitude*pi()/180))+cos((".$lat1."*pi()/180)) * cos((latitude*pi()/180)) * cos(((".$long1."- longitu

我正在使用MIT AppInventor开发一个应用程序。从应用程序中,我将当前位置纬度和经度发送到php。我有一个mysql表,它存储完整的地址,包括lat和long。这是问题所在

$sSQL= "SELECT *,(((acos(sin((".$lat1."*pi()/180)) * sin((latitude*pi()/180))+cos((".$lat1."*pi()/180)) * cos((latitude*pi()/180)) * cos(((".$long1."- longitude)*pi()/180))))*180/pi())*60*1.1515*1.609344) as distance_var FROM  DIVE_LOC HAVING distance_loc < 5 ORDER BY distance LIMIT 0 , 20";  
比较结果,下面是输出

$sSQL= "SELECT *,(((acos(sin((".$lat1."*pi()/180)) * sin((latitude*pi()/180))+cos((".$lat1."*pi()/180)) * cos((latitude*pi()/180)) * cos(((".$long1."- longitude)*pi()/180))))*180/pi())*60*1.1515*1.609344) as distance_var FROM  DIVE_LOC HAVING distance_loc < 5 ORDER BY distance LIMIT 0 , 20";  
PHP value - 0.32493112554566 # mySQL value -0.320931017946721
PHP value - 0.49010759578908 # mySQL value -0.49327293708344117
PHP value - 0.49010759578908 # mySQL value -0.49327293708344117
PHP value - 0.65728970497002 # mySQL value -0.6598218485814622
PHP value - 0.88521338025908 # mySQL value -0.8844764825185991
PHP value - 1.1443186694143 # mySQL value -1.1438416915550529. 

我只是想知道这些值是否存在差异。两者不可能完全相同

这个怎么样。这可能是由于php中用于计算的float或double数据类型和mysql中使用的另一种数据类型造成的。首先将单位转换为英里,然后再转换为公里,这真的很奇怪。为什么不全程使用公里数呢?这个怎么样。这可能是由于php中用于计算的float或double数据类型和mysql中使用的另一种数据类型造成的。首先将单位转换为英里,然后再转换为公里,这真的很奇怪。为什么不全程使用km?
$sSQL= "SELECT *,(((acos(sin((".$lat1."*pi()/180)) * sin((latitude*pi()/180))+cos((".$lat1."*pi()/180)) * cos((latitude*pi()/180)) * cos(((".$long1."- longitude)*pi()/180))))*180/pi())*60*1.1515*1.609344) as distance_var FROM  DIVE_LOC HAVING distance_loc < 5 ORDER BY distance LIMIT 0 , 20";