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

Android调用PHP执行带WHERE条件的MySQL SELECT查询失败求助

问题根因

  • 参数接收方式不匹配:Android端将ID参数拼接在URL路径后,属于GET请求的查询参数,你的PHP代码中使用$_POST['ID']无法获取到该参数值,导致$username为空,WHERE条件匹配不到任何数据,查询无结果返回。
  • 预处理语句使用不规范:直接将变量拼接进SQL语句的写法存在SQL注入风险,也可能因为变量携带特殊字符触发SQL语法错误。
  • 原有代码逻辑残缺:给出的代码片段遗漏了将查询到的单条数据推入结果数组、最终返回响应给Android端的逻辑。

修复方案

替换原有代码为以下内容:

// 改为用$_GET接收URL携带的参数,也可以用$_REQUEST兼容GET/POST两种请求方式
$username = $_GET['ID'];
// 调试时可以先打开下方注释,确认参数是否正常拿到
// var_dump($username);exit;

$heroes = array(); 

// 预处理SQL用?做占位符,不要直接拼接变量
$sql = "SELECT ID, LAHETTAJAID, VASTAANOTTAJAID, PURKUAIKA FROM AJOJARJESTELY WHERE KULJETTAJAID = ?";

$stmt = $conn->prepare($sql);
// 绑定参数,s代表参数类型为字符串,如果ID是数字类型可以改为i
$stmt->bind_param("s", $username);

$stmt->execute();

$stmt->bind_result($ID, $LAHETTAJAID, $VASTAANOTTAJAID, $PURKUAIKA);

while($stmt->fetch()){
    $temp = [
        'id'=>$ID,
        'l'=>$LAHETTAJAID,
        'vastaanottaja'=>$VASTAANOTTAJAID,
        'purkuaika'=>$PURKUAIKA
    ];
    // 补全将单条数据推入结果数组的逻辑
    array_push($heroes, $temp);
}
// 补全返回响应逻辑,将结果数组转为JSON返回给Android端
echo json_encode($heroes);

额外排查建议

如果修改后依然有问题,可以开启PHP错误提示,打印$stmt->error查看具体的SQL执行错误信息,也可以直接在浏览器访问测试地址/sqlphp/ajodbquery.php?ID=xxx(替换xxx为数据库中实际存在的KULJETTAJAID值),直接查看接口返回结果排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:15:03