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

SQL/PHP实现用户个人主页显示专属用户信息的方法

解决PHP页面始终显示首个用户信息的问题

看起来你遇到的问题很典型——查询用户专属信息时没有根据当前登录用户的唯一标识(user_id)做过滤,导致每次都拉取了数据库里的第一条记录。咱们一步步排查和解决:

1. 确认登录后Session是否正确存储了当前用户的user_id

首先要确保用户登录成功后,你已经把该用户的user_id存入了Session。登录逻辑里应该有类似这样的代码:

// 假设登录验证通过后,从数据库拿到当前用户的信息
$user = mysql_fetch_assoc($result);
// 将user_id存入Session
$_SESSION['user_id'] = $user['user_id'];

你可以在显示用户信息的页面开头加一行调试代码,确认Session里的user_id是否正确:

var_dump($_SESSION); // 查看输出里是否有对应登录用户的user_id值

如果Session里的user_id始终是管理员的ID,那问题出在登录逻辑——你可能不管哪个用户登录,都错误地把管理员的ID存入Session了。

2. 检查用户信息查询的SQL语句

这是最常见的问题:你的查询语句没有添加WHERE user_id = 当前用户ID的过滤条件,导致直接取了数据库的第一条记录。

错误示例(会拉取第一条用户):

$sql = "SELECT first_name, last_name FROM users";
$result = mysql_query($sql);
$user = mysql_fetch_assoc($result); // 这里拿到的是数据库里的第一个用户

正确写法(根据Session里的user_id过滤):

// 先确保Session里存在有效user_id
if(isset($_SESSION['user_id'])){
    $user_id = $_SESSION['user_id'];
    // 注意:mysql扩展已废弃,建议后续换成mysqli/PDO,这里先适配你的现有代码
    $sql = "SELECT first_name, last_name FROM users WHERE user_id = $user_id";
    $result = mysql_query($sql);
    $user = mysql_fetch_assoc($result);
} else {
    // 未登录的处理逻辑,比如跳转到登录页
    header("Location: login.php");
    exit;
}

3. 额外注意事项

  • SQL注入风险:上面的写法直接把$_SESSION['user_id']拼进SQL里,虽然Session里的值一般是你自己存入的,但还是建议使用预处理语句(比如mysqli的prepare)来避免潜在风险。
  • Session启动时机:确保session_start()在页面的最开头调用,不能有任何HTML输出、空格甚至空行在它之前,否则Session可能无法正常工作。
  • mysql扩展废弃:你用的mysql_con...属于已废弃的mysql扩展,PHP 7及以上版本已经移除了这个扩展,建议尽快迁移到mysqli或PDO,避免后续兼容性问题。

内容的提问来源于stack exchange,提问作者I Need Help

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:17:59