You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安卓端传经纬度至PHP计算数据库门店距离并排序的实现问题

问题解答

你的疑问解答

  • 关于SQL中latitude读取问题:只要你的门店表的经纬度列名确实是latitude(纬度)、longitude(经度),写法完全正确,可以正常读取表中对应列的数值。
  • 关于AS distance、ORDER BY distance的合法性:写法完全正确。AS distance是给你通过公式计算出来的距离值临时起的别名,不需要你的表中有同名实体字段,ORDER BY可以直接调用这个别名排序,这个逻辑本身没有问题。

导致功能失效的真实错误点

你代码中存在多个拼写、语法、逻辑错误,才是功能无法运行的核心原因:

  1. 变量拼写错误
    你SQL语句中写的是$user_logitude,但你实际接收参数定义的变量是$user_longitude,少写了一个字母n,导致经度参数传递错误,距离计算必然失败。
  2. SELECT查询遗漏需要的字段
    你当前的SELECT语句只返回了计算出来的distance一列,没有查询你需要的name、latitude、longitude字段,所以后续取$row[1]、$row[2]、$row[3]完全取不到对应值,返回的数组全为空。
  3. 排序规则错误
    你当前用的是ORDER BY distance DESC,是按距离从远到近排序,如果你要离用户近的门店排在前面,应该改为ORDER BY distance ASC。
  4. 语法&逻辑错误
  • mysqli_connect("“)这里用了中文双引号,要改为英文双引号"
  • 末尾的if判断逻辑错误且缺少闭合大括号:你安卓端是GET方式传参,你写的if判断要求是POST请求提交submit参数或者$android变量存在,但你既没有定义$android变量,也没有用POST请求,所以永远不会执行输出JSON的逻辑,前端拿不到返回结果。

修正后的可运行PHP代码参考

<?php 
error_reporting(E_ALL);
ini_set("display_errors", 1);
// 替换为你自己的数据库连接信息
$con = mysqli_connect("主机地址", "用户名", "密码", "数据库名"); 
mysqli_set_charset($con,"utf8"); 

// 接收安卓端GET参数
$user_latitude = $_GET['user_latitude'];
$user_longitude = $_GET['user_longitude'];

// 修正后的SQL:查询需要的字段+距离计算,按距离升序
$sql = "SELECT name, latitude, longitude,
        (6371*acos(cos(radians(" . $user_latitude . "))*cos(radians(latitude))
        *cos(radians(longitude)-radians(" . $user_longitude . "))
        +sin(radians(" . $user_latitude . "))*sin(radians(latitude))))
        AS distance
        FROM 你的实际表名
        ORDER BY distance ASC";

$res = mysqli_query($con, $sql); 
$place = array(); 

// 对应返回字段索引:0=name,1=latitude,2=longitude,3=distance
while($row = mysqli_fetch_row($res)) { 
    array_push($place, array(
        'name'=>$row[0],
        'latitude'=>$row[1],
        'longitude'=>$row[2],
        'distance'=>$row[3]
    )); 
} 

// 直接输出JSON,不需要多余的POST判断
echo json_encode(array("place"=>$place), JSON_UNESCAPED_UNICODE); 
mysqli_close($con); 
?>

补充优化建议(可选)

后续可以把SQL拼接改为预处理语句,避免SQL注入风险,当前先保证基础功能跑通即可。

内容的提问来源于stack exchange,提问作者spring0806

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:09:03