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

如何从数据库获取当前登录用户的交易日志?原代码返回全部数据

解决仅显示当前登录用户交易日志的问题

你的代码返回所有用户记录的核心原因是:SQL查询没有添加当前登录用户的筛选条件,直接拉取了表中全部数据。以下是具体修复方案:

核心修复步骤

  • 确认已通过会话(Session)保存当前登录用户的唯一标识(比如user_id、username,需匹配你的数据库表设计)
  • 在SQL中添加WHERE子句,筛选仅属于该用户的记录
  • 使用预处理语句执行查询,避免SQL注入风险

修改后的完整代码

<?php
// 开启会话(如果代码开头未添加)
session_start();

// 校验用户是否已登录
if (!isset($_SESSION['user_id'])) {
    echo "<tr><td colspan='4'>请先登录查看交易记录</td></tr>";
    exit;
}

// 构建带占位符的安全查询语句
$sql = "SELECT amount, status, transactionid, date FROM admin_dept_table WHERE user_id = ?";
$stmt = mysqli_prepare($conn, $sql);
// 绑定参数:"i"表示整数类型,若为字符串则改为"s"
mysqli_stmt_bind_param($stmt, "i", $_SESSION['user_id']);
mysqli_stmt_execute($stmt);
$query_run = mysqli_stmt_get_result($stmt);
?>

<table class="display table"  id="example">
    <thead>
        <tr class="info">
            <th>Amount(USD)</th>
            <th>Status</th>
            <th>Tnx ID</th>
            <th>Date</th>
        </tr>
    </thead>
    <tbody>
        <?php
        if(mysqli_num_rows($query_run) > 0) {
            while($row = mysqli_fetch_assoc($query_run)){
        ?>
        <tr>
            <td><?php echo $row['amount']; ?></td>
            <td><?php echo $row['status']; ?></td>
            <td><?php echo $row['transactionid']; ?></td>
            <td><?php echo $row['date']; ?></td>
        </tr>
        <?php
            }
        }else{
            echo "<tr><td colspan='4'>no record found</td></tr>";
        }
        // 关闭预处理语句
        mysqli_stmt_close($stmt);
        ?>
    </tbody>
</table>

关键调整说明

  • 替换user_id为你数据库表中实际存储用户标识的字段名(比如username、email)
  • 若用户标识是字符串类型,将mysqli_stmt_bind_param中的"i"改为"s"
  • 确保用户登录时已将标识存入会话,比如执行$_SESSION['user_id'] = $logged_in_user_id;

内容的提问来源于stack exchange,提问作者Ayomi Bami

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:20:39