Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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 PDO选择当前位置半径上的位置_Php_Android_Mysql_Sql_Pdo - Fatal编程技术网

PHP PDO选择当前位置半径上的位置

PHP PDO选择当前位置半径上的位置,php,android,mysql,sql,pdo,Php,Android,Mysql,Sql,Pdo,嘿,我有一个MySQL商店表,每行都包含纬度和经度,当用户进入android应用程序时,他可以选择过滤他选择的半径范围内的商店,我需要编写一个php代码,只选择并打印用户选择的半径范围内的商店,现在我举一个小于100的例子,我搜索的所有代码似乎都不适合我,以下是我的一些php代码: 我尝试过的距离函数: function distance($lat1, $lon1, $lat2, $lon2) { $theta = $lon1 - $lon2; $dist = sin(deg2rad(

嘿,我有一个MySQL商店表,每行都包含纬度和经度,当用户进入android应用程序时,他可以选择过滤他选择的半径范围内的商店,我需要编写一个php代码,只选择并打印用户选择的半径范围内的商店,现在我举一个小于100的例子,我搜索的所有代码似乎都不适合我,以下是我的一些php代码:

我尝试过的距离函数:

function distance($lat1, $lon1, $lat2, $lon2) {

  $theta = $lon1 - $lon2;
  $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
  $dist = acos($dist);
  $dist = rad2deg($dist);
  $miles = $dist * 60 * 1.1515;
   return ($miles * 1.609344);
}
下面是select语句:

$my_lat = $_POST["lat"];
$my_long = $_POST["lon"];

 if($my_lat != null)
{

$stmt = $db->query("SELECT * FROM app HAVING distance(lat,lon,'$my_lat','$my_long')<100");
}
$my_lat=$\u POST[“lat”];
$my_long=$\u POST[“lon”];
如果($my_lat!=null)
{

$stmt=$db->query(“从具有距离的应用程序中选择*(纬度、经度、$my_-lat'、$my_-long'))您是否在MySQL数据库中将距离称为SQL函数,但您已经在PHP中实现了它?要么您必须查询所有条目并继续比较PHP中的条目,要么您为MySQL实现了距离函数。可能是@Blackam的重复,我只是尝试提取所有数据,以确定它与当前位置的距离较低从特定半径警告:尽可能使用准备好的语句,以避免在查询和创建过程中注入任意数据。在任何用户提供的数据都指定有
:name
指示符的情况下,这一操作非常简单,随后将使用
绑定参数
执行器填充指示符ute
取决于您使用的是哪一个。不要这样做。编写您自己的函数完全是浪费时间,而且您总是会出错。使用。值得注意的是,虽然MySQL对GIS有基本的支持,但如果您经常这样做,那么从长远来看效果会更好。您在MySQL中将距离称为SQL函数吗我们的MySQL数据库,但您已经在PHP中实现了它?要么您必须查询所有条目并继续比较PHP中的条目,要么您为MySQL实现了一个距离函数。可能重复@Blackam我只是试图提取所有数据,表明它与当前位置的距离低于特定半径警告:无论何时可以使用准备好的语句来避免在查询和创建中注入任意数据。在任何用户提供的数据被指定为
:name
指示符的情况下,都可以非常简单地执行这些操作,稍后使用
bind\u param
execute
来填充指示符,具体取决于您使用的指示符唱歌。不要这样做。编写自己的函数完全是浪费时间,而且你总是会弄错。使用。值得注意的是,虽然MySQL对GIS有基本的支持,但如果你经常这样做,那么从长远来看效果会更好。