Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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 SQL搜索“;近;经纬度_Php_Mysql_Sql - Fatal编程技术网

Php SQL搜索“;近;经纬度

Php SQL搜索“;近;经纬度,php,mysql,sql,Php,Mysql,Sql,我正在尝试编写一个搜索栏,在某个位置附近搜索。现在它是硬编码的。在我为经度和纬度添加类似的语句之前,该语句一直有效。有更好的方法吗 $searchString = explode(' ', $_GET["searchString"]); $useLocation = $_GET["useCurrentLocation"]; if($useLocation == 1){ foreach($searchString AS $key){ $stmt = $db->pre

我正在尝试编写一个搜索栏,在某个位置附近搜索。现在它是硬编码的。在我为经度和纬度添加类似的语句之前,该语句一直有效。有更好的方法吗

$searchString = explode(' ', $_GET["searchString"]);
$useLocation = $_GET["useCurrentLocation"]; 
if($useLocation == 1){
    foreach($searchString AS $key){
        $stmt = $db->prepare("SELECT * FROM locations WHERE Name LIKE '%{$key}%' AND Longitude Like '-79.8579' And Latitude Like '43.5237'"); 
        $stmt->execute();
        $result = $stmt->get_result();
        while($row = $result->fetch_assoc()){
            echo $row['Name'];
        }

    }
}

你可以在网上找到很多关于“如何按位置搜索”的解决方案

关于Stackoverflow,有一些答案:

或者在谷歌上:

这是我最后一个问题:

我通过谷歌地图API获得经度/纬度。输入一个地址, 并获取GPS坐标。 之后,使用SQL计算位置和周围的对象

$longitude_ref=7.694731; $latitude_ref=48.560719

SELECT *
  FROM maps
  WHERE (
    6366 *
    acos(
      cos(radians(48.560719)) -- $latitude_ref
      *
      cos(radians(`latitude`))
      *
      cos(radians(`longitude`) - radians($longitude_ref)) -- $longitude_ref
      +
      sin(radians(48.560719)) * sin(radians(`latitude`)) -- $latitude_ref
    )
  ) <= 2 -- r in Km (here: 2 km)

互联网上有许多例子:)

你可以在互联网上找到许多关于“如何按位置搜索”的解决方案

关于Stackoverflow,有一些答案:

或者在谷歌上:

这是我最后一个问题:

我通过谷歌地图API获得经度/纬度。输入一个地址, 并获取GPS坐标。 之后,使用SQL计算位置和周围的对象

$longitude_ref=7.694731; $latitude_ref=48.560719

SELECT *
  FROM maps
  WHERE (
    6366 *
    acos(
      cos(radians(48.560719)) -- $latitude_ref
      *
      cos(radians(`latitude`))
      *
      cos(radians(`longitude`) - radians($longitude_ref)) -- $longitude_ref
      +
      sin(radians(48.560719)) * sin(radians(`latitude`)) -- $latitude_ref
    )
  ) <= 2 -- r in Km (here: 2 km)
互联网上的许多例子:)