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

Android Spinner仅显示单条学生课程问题及代码求助

解决Spinner仅显示单条课程的问题

嘿,问题出在你的PHP后端代码里!你现在的查询逻辑只返回了数据库里的第一条课程记录,所以Spinner自然只能显示一个选项。咱们一步步来修复:

1. 修复PHP的查询方法

你用了fetch_assoc(),这个方法每次只会取出查询结果的一行数据。要获取该学生的所有课程,得循环把所有结果都捞出来:

public function getCourse($studID){ 
    $stmt = $this->con->prepare("SELECT * FROM courses WHERE studID = ?"); 
    $stmt->bind_param("s", $studID); 
    $stmt->execute(); 
    $result = $stmt->get_result();
    $courses = array();
    // 循环遍历所有查询结果,存入数组
    while ($row = $result->fetch_assoc()) {
        $courses[] = $row;
    }
    return $courses;
}

2. 修复PHP请求处理逻辑

原来的代码只把单条数据塞进了response数组,现在要遍历所有返回的课程,把每一门都加进去:

<?php 
if($_SERVER['REQUEST_METHOD']=='GET'){ 
    $sid = $_GET['studID']; 
    require_once ('dboperations.php'); 
    $db = new dboperations(); 
    $courses = $db->getCourse($sid); // 现在返回的是完整的课程数组
    $response = array(); 
    // 遍历每一门课程,构造响应数据
    foreach ($courses as $course) {
        array_push($response,array(
            'coCode'=>$course['CourseCode'],
            'coName'=>$course['CourseName'],
            'coGroup'=>$course['CourseGroup'],
            'stID'=> $course['studID']
        ));
    }
    echo json_encode(array("result"=>$response)); 
    mysqli_close($db->con); // 注意这里要关闭数据库连接对象,原代码的mysqli_close($db)是错误的
} 
?>

3. Android端代码确认

你的Android代码其实是没问题的:getStudents方法里循环遍历了JSONArray的每一项,把课程代码加入students列表,再设置给Spinner。只要后端返回了多条课程数据,这里就能正确加载所有选项。

现在测试一下,后端会返回该学生的所有课程,Spinner就能显示全部选项啦!

内容的提问来源于stack exchange,提问作者Muhamad Arif Abd Rahim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:18:14