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

如何实现数据库用户姓名列表展示并跳转至个人详情页?

完善用户列表展示页面(带详情链接)

我来帮你把这个页面的功能补全,实现展示用户姓氏+名字,并且名字可点击跳转到详情页的需求。先给你完整的修正代码,再拆解关键细节:

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>用户列表</title>
    <style>
        table { border-collapse: collapse; width: 60%; margin: 20px auto; }
        th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
        th { background-color: #f2f2f2; }
        a { color: #007bff; text-decoration: none; }
        a:hover { text-decoration: underline; }
    </style>
</head>
<body>
    <h1 style="text-align: center;">用户列表</h1>
    <?php
    include 'db.php'; // 确保这个文件正确建立了数据库连接$conn

    // 优化查询:只获取需要的字段(避免SELECT *的冗余)
    $query = 'SELECT id, last_name, first_name FROM subjects';
    $result = $conn->query($query);

    if (!$result) {
        // 处理查询失败的情况
        echo "<p style='text-align: center; color: red;'>查询用户数据失败:" . $conn->error . "</p>";
        exit;
    }
    ?>

    <?php if ($result->num_rows > 0): ?>
        <table>
            <thead>
                <tr>
                    <th>姓氏</th>
                    <th>名字</th>
                </tr>
            </thead>
            <tbody>
                <?php while ($row = $result->fetch_assoc()): ?>
                    <tr>
                        <!-- 转义输出防止XSS攻击 -->
                        <td><?php echo htmlspecialchars($row['last_name']); ?></td>
                        <td>
                            <!-- 名字作为链接,传递用户ID到详情页 -->
                            <a href="user_details.php?id=<?php echo htmlspecialchars($row['id']); ?>">
                                <?php echo htmlspecialchars($row['first_name']); ?>
                            </a>
                        </td>
                    </tr>
                <?php endwhile; ?>
            </tbody>
        </table>
    <?php else: ?>
        <p style="text-align: center;">暂无用户数据</p>
    <?php endif; ?>

    <?php
    // 释放结果集和关闭连接
    $result->free();
    $conn->close();
    ?>
</body>
</html>

关键细节说明:

  • 优化数据库查询:我把SELECT *改成了SELECT id, last_name, first_name,只获取需要的字段,减少数据传输量,提升性能。
  • 详情页链接构建:通过user_details.php?id=用户ID的形式传递参数,你的详情页(比如user_details.php)可以通过$_GET['id']获取用户ID,然后查询该用户的全部信息展示。
  • XSS安全防护:所有输出的用户数据都用htmlspecialchars()转义,避免恶意脚本注入,这是Web开发的基础安全规范。
  • 规范HTML结构:用<thead>和<tbody>区分表头和表格内容,添加了基础的CSS样式让页面更美观。
  • 异常处理:增加了查询失败的提示,以及没有用户数据时的友好提示,提升用户体验。

另外,你的user_details.php可以参考这样的逻辑(简单示例):

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>用户详情</title>
</head>
<body>
    <?php
    include 'db.php';
    if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
        echo "<p>无效的用户ID</p>";
        exit;
    }
    $userId = intval($_GET['id']);
    // 用预处理语句防止SQL注入
    $stmt = $conn->prepare('SELECT * FROM subjects WHERE id = ?');
    $stmt->bind_param('i', $userId);
    $stmt->execute();
    $result = $stmt->get_result();
    if ($user = $result->fetch_assoc()) {
        echo "<h1>" . htmlspecialchars($user['first_name'] . ' ' . $user['last_name']) . " 的详情</h1>";
        echo "<p>邮箱:" . htmlspecialchars($user['email']) . "</p>";
        // 输出其他用户字段...
    } else {
        echo "<p>未找到该用户</p>";
    }
    $stmt->close();
    $conn->close();
    ?>
</body>
</html>

注意:在user_details.php中使用了预处理语句,这是防止SQL注入的关键,一定要避免直接把$_GET['id']拼接到SQL语句里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:04:39