Android调用PHP接口从MySQL取数据仅返回单行问题求助
解决Android应用仅获取MySQL数据表第一行数据的问题
咱们先从PHP代码入手排查问题,再给出针对性的修复方案:
1. 原代码的潜在隐患
你的代码片段里有几个可能导致数据不全的问题:
- 没有提前初始化
$flag为空数组,极端情况下可能导致JSON输出异常 - 最后关闭数据库连接的参数写错了:
CloseCon($c...应该是CloseCon($conn) - 缺少查询失败的异常处理逻辑
- 使用
mysqli_fetch_array()会同时返回索引数组和关联数组,生成的JSON冗余度较高,也可能增加Android端解析的复杂度
2. 修复后的PHP代码
<?php include 'db_connection.php'; $conn = OpenCon(); // 检查数据库连接状态 if (mysqli_connect_errno()) { echo json_encode(["error" => "数据库连接失败:" . mysqli_connect_error()]); exit; } // 设置响应头,确保JSON编码格式正确且无乱码 header('Content-Type: application/json; charset=utf-8'); $sql = "SELECT * FROM asadharap"; $result = mysqli_query($conn, $sql); // 初始化空数组存储结果 $response = []; if ($result) { // 遍历所有结果行,用mysqli_fetch_assoc返回纯关联数组 while ($row = mysqli_fetch_assoc($result)) { $response[] = $row; } // 释放结果集资源 mysqli_free_result($result); } else { $response["error"] = "查询失败:" . mysqli_error($conn); } // 输出JSON格式数据 echo json_encode($response); // 正确关闭数据库连接 CloseCon($conn); ?>
3. 额外检查建议
除了PHP端,也要确认Android端的解析逻辑:
- 确保你是把返回的JSON解析成数组对象,而不是单个数据对象。比如用Gson解析时,要解析成
List<你的数据模型类>,而不是单个模型实例 - 可以先在浏览器或Postman中访问PHP接口,查看返回的JSON是否包含所有行数据,排除Android端的问题
内容的提问来源于stack exchange,提问作者Vikrant Dharap
相关产品推荐
相关产品推荐

