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

如何用PHP从数据库获取并显示登录用户数据?求助

问题分析与修复方案

你的代码存在多个关键问题,导致无法正确显示登录用户的数据,以下是问题点和修正后的代码:

核心问题点

  • 未初始化Session:使用$_SESSION前必须调用session_start(),否则无法读取登录用户的邮箱信息
  • 未定义$email变量:应该从$_SESSION['email']中获取当前登录用户的邮箱
  • mysqli_query参数缺失:必须传入数据库连接对象(来自db.inc.php)才能执行查询
  • 错误的触发条件:isset($_POST['index.php'])逻辑不成立,页面加载时就应该执行用户数据查询
  • 变量名不匹配:PHP代码中定义的是$fetch,HTML输出时错误写成$_fetch
  • 存在SQL注入风险:直接将变量拼接进SQL语句,容易遭受攻击

修正后的PHP代码

<?php
session_start(); // 必须在脚本最顶部调用,开启Session
require('db.inc.php');

// 检查用户是否登录,未登录则跳转至首页
if(!isset($_SESSION['email'])){
  header('Location: home.php');
  exit; // 跳转后终止脚本,避免后续代码执行
}

// 从Session获取当前登录用户的邮箱
$email = $_SESSION['email'];
// 使用预处理语句执行查询,避免SQL注入(假设db.inc.php中的连接变量为$conn)
$stmt = mysqli_prepare($conn, "SELECT * FROM tbl_account WHERE email = ?");
mysqli_stmt_bind_param($stmt, "s", $email);
mysqli_stmt_execute($stmt);
$data = mysqli_stmt_get_result($stmt);

$fetch = [];
if(mysqli_num_rows($data) > 0){
  $fetch = mysqli_fetch_assoc($data);
}
?>

修正后的显示表单代码

<h1 class="text-primary">Your Information</h1>                   
<br>
<h5>First Name</h5>
<h3><?php echo isset($fetch['firstName']) ? $fetch['firstName'] : '未找到数据'; ?></h3><br>
<h5>Last Name</h5>
<h3><?php echo isset($fetch['lastName']) ? $fetch['lastName'] : '未找到数据'; ?></h3><br>
<h5>Sex</h5>
<h3><?php echo isset($fetch['sex']) ? $fetch['sex'] : '未找到数据'; ?></h3><br>
<h5>Email Address</h5>
<h3><?php echo isset($fetch['email']) ? $fetch['email'] : '未找到数据'; ?></h3><br>
</div>

额外说明

  • 确保db.inc.php中正确初始化了数据库连接变量(如示例中的$conn),若变量名不同需对应修改
  • 添加isset()判断可避免数据不存在时出现「Undefined index」错误
  • 预处理语句是防范SQL注入的标准做法,禁止直接将用户输入拼接进SQL语句

内容的提问来源于stack exchange,提问作者Carl Ret02

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:17:02