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

Updating Database And Query Based On Location

在过去的几天里,我一直在尝试修复 Android 中的代码,以便我可以将新的纬度和经度发送到数据库,并且在它更新时我也想要它根据位置查询。但是,我在执行此操作时遇到了麻烦 android,我想知道是否有办法 "combine" 我用于更新和查询数据库的两个 php 代码。这两个代码单独工作,但我可以结合使用吗? 我需要用新数据更新数据库,然后进行查询,反之亦然。

Update.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);

QueryByLocation.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);