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

如何用PDO查询MySQL指定行,实现点击链接跳转至对应文章详情页

实现单篇博客文章详情页步骤

1. 修改文章列表页的跳转链接

首先要给列表页里文章标题的跳转链接加上对应文章的唯一标识(比如表中的id字段),让详情页能识别要加载的目标文章:

<?php foreach ($posts as $post) { ?>
    <div class="blog-post">
        <!-- 给链接添加?id=文章ID的参数 -->
        <a href="single-post.php?id=<?php echo $post['id']; ?>">
            <h2 class="blog-post-title"><?php echo $post['title']; ?></h2>
        </a>
        <p class="blog-post-meta"><?php echo $post['created_at']; ?> by <a href="#"><?php echo $post['author']; ?></a></p>
        <p><?php echo $post['body']; ?></p>
    </div>
<?php } ?>

2. 编写single-post.php的代码

在详情页中,先获取URL里的id参数,再从数据库查询对应ID的文章,最后渲染内容:

<?php
// 假设已通过PDO建立数据库连接$connection
if (isset($_GET['id']) && is_numeric($_GET['id'])) {
    $postId = $_GET['id'];
    // 用预处理语句避免SQL注入
    $sql = "SELECT * FROM posts WHERE id = :id";
    $statement = $connection->prepare($sql);
    $statement->bindParam(':id', $postId, PDO::PARAM_INT);
    $statement->execute();
    $statement->setFetchMode(PDO::FETCH_ASSOC);
    $post = $statement->fetch();

    if ($post) {
        // 渲染单篇文章内容
?>
        <div class="blog-post">
            <h2 class="blog-post-title"><?php echo $post['title']; ?></h2>
            <p class="blog-post-meta"><?php echo $post['created_at']; ?> by <a href="#"><?php echo $post['author']; ?></a></p>
            <div class="blog-post-content"><?php echo $post['body']; ?></div>
        </div>
<?php
    } else {
        // 文章不存在时的提示
        echo "<p>抱歉,未找到该文章</p>";
    }
} else {
    // 参数不合法时的提示
    echo "<p>请求参数无效</p>";
}
?>

核心注意点

  • 用is_numeric()验证id参数,确保是合法数字,过滤非法请求
  • 采用PDO参数绑定的预处理语句,彻底避免SQL注入风险
  • 增加异常场景处理,提升页面的健壮性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:06:02