php - 根据位置更新数据库和查询

标签 php android jquery mysql location

在过去的几天里,我一直在尝试修复 Android 中的代码,以便我可以通过 OnLocationChanged () 将新的纬度和经度发送到数据库,并且在更新时我希望它根据位置进行查询。但是我在 android 上遇到了麻烦,我想知道是否有一种方法可以“组合”我用于更新和查询数据库的两个 php 代码。两个代码单独工作,但我可以组合起来吗? 我需要使用新数据更新数据库,然后查询,反之亦然。

更新.php

$latitude1 = $_POST["Latitude"];
$longitude1 = $_POST["Longitude"];
$username = $_POST["Username"];

$updatequery = mysqli_prepare($con , "UPDATE users SET Latitude = ?, Longitude = ? WHERE Username = ?");
mysqli_stmt_bind_param($updatequery ,"dds",$latitude1,$longitude1,$username);
mysqli_stmt_execute($updatequery);
 mysqli_stmt_close($updatequery);
mysqli_close($con);

按位置查询.php

$origLat = $_POST["Latitude"];
$origLon = $_POST["Longitude"];
$dist = 30;
$id = $_POST["ID"];

if(mysqli_connect_errno($con)) {
die("Connection failed : " . mysqli_connect_error());
}

$sql = "SELECT ID, Name, Age, City, Gender, Latitude, Longitude, 3956 * 2 * 1.609344 * 1000 *
          ASIN(SQRT( POWER(SIN(($origLat - abs(Latitude))*pi()/180/2),2)
          +COS($origLat*pi()/180 )*COS(abs(Latitude)*pi()/180)
          *POWER(SIN(($origLon-Longitude)*pi()/180/2),2))) 
          as distance FROM users WHERE ID != '$id'
          AND Longitude BETWEEN ($origLon-$dist/abs(cos(radians($origLat))*69)) 
          AND ($origLon+$dist/abs(cos(radians($origLat))*69)) 
          AND Latitude BETWEEN ($origLat-($dist/69)) 
          AND ($origLat+($dist/69))
          HAVING distance < $dist ORDER BY distance limit 30;"; 



$result = mysqli_query($con, $sql);

$rows = array();

while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    $rows[] = $row;
}

mysqli_close($con);
echo json_encode($rows);

最佳答案

$origLat = $_POST["Latitude"];
$origLon = $_POST["Longitude"];
$dist = 30;
$id = $_POST["ID"];
$username = $_POST["Username"];
if(mysqli_connect_errno($con)) {
die("Connection failed : " . mysqli_connect_error());
}

$updatequery = mysqli_prepare($con , "UPDATE users SET Latitude = ?, Longitude = ? WHERE Username = ?");
mysqli_stmt_bind_param($updatequery ,"dds",$origLat,$origLon,$username);
mysqli_stmt_execute($updatequery);
 mysqli_stmt_close($updatequery);

$sql = "SELECT ID, Name, Age, City, Gender, Latitude, Longitude, 3956 * 2 * 1.609344 * 1000 *
          ASIN(SQRT( POWER(SIN(($origLat - abs(Latitude))*pi()/180/2),2)
          +COS($origLat*pi()/180 )*COS(abs(Latitude)*pi()/180)
          *POWER(SIN(($origLon-Longitude)*pi()/180/2),2))) 
          as distance FROM users WHERE ID != '$id'
          AND Longitude BETWEEN ($origLon-$dist/abs(cos(radians($origLat))*69)) 
          AND ($origLon+$dist/abs(cos(radians($origLat))*69)) 
          AND Latitude BETWEEN ($origLat-($dist/69)) 
          AND ($origLat+($dist/69))
          HAVING distance < $dist ORDER BY distance limit 30;"; 



$result = mysqli_query($con, $sql);

$rows = array();

while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    $rows[] = $row;
}

mysqli_close($con);
echo json_encode($rows);

关于php - 根据位置更新数据库和查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32095829/

相关文章:

javascript - 如何将指向所有图像的链接包装在一个 div 中?

使用 While 循环创建的 PHP 列表 - 如何使用提交按钮更新所有内容

php - 无法在wordpress中获取页面名称

java - 解析数据时出错 org.json.JSONException : Value <br of type java. lang.String

android - 如何向特定设备发送推送通知

javascript - HTML 导航栏在页面加载时消失

javascript - 如何在 jquery 中将 div 逐行追加?

php - 无法用 preg_replace() 中的其他内容替换 `$_`

android - 在Android键盘Phonegap应用程序上触发输入事件

android - 为什么我的 recyclerview 从微调器中选择时有 2 行相同的数据?