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

如何修改代码实现按登录用户ID展示对应分配职位?

解决方法:仅展示当前登录用户的分配职位

我帮你排查了代码问题,核心原因是你实际用来渲染职位列表的getJobs函数没有做用户ID过滤——你在HTML页面里写的那一段查询逻辑根本没被用到,页面显示的是getJobs返回的所有职位数据。下面是具体修改步骤:

1. 修改getJobs函数,添加用户ID过滤

更新你的主PHP函数,让它接收当前用户的ID作为参数,并在SQL中加入匹配条件:

function getJobs($conn, $userID) {
    // 情况1:jobs表本身存储了user_ID(你描述的创建职位时已分配)
    $query = "SELECT * FROM jobs WHERE user_ID = :user_ID";
    
    // 情况2:如果职位是通过driver_jobs关联表分配的(jobs表无user_ID),改用JOIN查询:
    // $query = "SELECT j.* FROM jobs j JOIN driver_jobs dj ON j.job_id = dj.job_id WHERE dj.user_ID = :user_ID";
    
    $stmt = $conn->prepare($query);
    // 绑定参数时指定类型为整数,提升安全性
    $stmt->bindValue(':user_ID', $userID, PDO::PARAM_INT);
    $stmt->execute();
    
    $workers = array();
    while($worker = $stmt->fetch(PDO::FETCH_OBJ)) {
        $workers[] = $worker;
    }
    return $workers;
}

2. 在HTML页面中正确调用函数并传入用户ID

找到你调用getJobs的位置(应该在foreach($workers as $worker)之前),传入当前登录用户的user_ID:

// 确保session已启动,获取当前用户ID
if(!isset($_SESSION)) { session_start(); }
$currentUserID = $_SESSION['user_ID'];

// 调用getJobs时传入用户ID
$workers = getJobs($conn, $currentUserID);

3. 清理冗余代码

你HTML页面中那段从$query = "SELECT * FROM jobs WHERE user_ID = :user_ID";开始的查询逻辑是冗余的,完全没被用到,可以直接删除,避免代码混乱。

额外检查

  • 确认$_SESSION['user_ID']存在且值正确:可以通过var_dump($_SESSION['user_ID']);打印出来验证。
  • 如果使用关联表driver_jobs,确保JOIN语句中的外键字段(比如j.job_id和dj.job_id)和你的数据库结构匹配。

修改完成后,页面就只会展示与当前登录用户user_ID匹配的职位了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:49:44