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

PHP如何通过URL的bid参数读取MySQL数据生成对应图书详情页

实现步骤

整体采用单文件路由逻辑,同一个index.php根据是否携带bid参数分别渲染列表页/详情页,不需要额外新增页面,也不需要JS参与。

1. 修改列表页书名跳转逻辑

你之前渲染图书列表表格时,原来的书名列是纯文本输出,修改为带GET参数的跳转链接即可,示例代码:

<!-- 原有表格图书列修改前 -->
<td><?php echo $book['b_title']; ?></td>

<!-- 修改后 -->
<td>
  <a href="index.php?bid=<?php echo (int)$book['b_id']; ?>">
    <?php echo htmlspecialchars($book['b_title']); ?>
  </a>
</td>

注:这里用(int)强制转换图书ID为数字,避免参数异常问题,htmlspecialchars用于转义书名特殊字符防止页面渲染异常。

2. 新增详情页逻辑判断与渲染

在index.php的最顶部添加参数判断逻辑,检测到存在合法的bid参数时,优先走详情查询与渲染逻辑:

2.1 参数校验与数据查询

<?php
// 数据库连接逻辑保持你之前的写法即可
$conn = mysqli_connect('你的数据库地址', '账号', '密码', 's-lib');

// 检测是否存在有效bid参数
if (isset($_GET['bid']) && is_numeric($_GET['bid'])) {
    $bid = (int)$_GET['bid'];
    // 用预处理查询防止SQL注入
    $stmt = mysqli_prepare($conn, "SELECT b_id, b_title, b_author, b_year, b_dl, b_descr, b_cover FROM 你的图书表名 WHERE b_id = ?");
    mysqli_stmt_bind_param($stmt, "i", $bid);
    mysqli_stmt_execute($stmt);
    $result = mysqli_stmt_get_result($stmt);
    $bookDetail = mysqli_fetch_assoc($result);
    
    // 没有查询到对应图书时跳转回列表页
    if (!$bookDetail) {
        header('Location: index.php');
        exit;
    }

    // ------------ 以下是详情页渲染代码 ------------
?>
<!DOCTYPE html>
<html>
<head>
    <title><?php echo htmlspecialchars($bookDetail['b_title']); ?> - 图书详情</title>
</head>
<body>
    <div class="book-detail">
        <!-- 封面展示 -->
        <img src="<?php echo htmlspecialchars($bookDetail['b_cover']); ?>" alt="<?php echo htmlspecialchars($bookDetail['b_title']); ?> 封面">
        <h1><?php echo htmlspecialchars($bookDetail['b_title']); ?></h1>
        <p>作者:<?php echo htmlspecialchars($bookDetail['b_author']); ?></p>
        <p>出版年份:<?php echo htmlspecialchars($bookDetail['b_year']); ?></p>
        <p><a href="<?php echo htmlspecialchars($bookDetail['b_dl']); ?>" target="_blank">点击下载图书</a></p>
        <div class="description">
            <h3>图书描述</h3>
            <p><?php echo htmlspecialchars($bookDetail['b_descr']); ?></p>
        </div>
        <p><a href="index.php">返回图书列表</a></p>
    </div>
</body>
</html>
<?php
    // 详情页渲染完成后直接退出,不执行后面的列表页代码
    exit;
}

// ------------ 以下是你原有的图书列表页代码 ------------
// 你之前查询所有图书、渲染列表表格的代码保持不变即可
?>

2.2 注意事项

  • 代码里的你的图书表名替换为你实际使用的图书表表名
  • 所有输出字段都用htmlspecialchars转义,避免XSS安全问题
  • 必须使用预处理查询,不要直接把bid拼接到SQL语句里,避免SQL注入风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:18:00