当前位置:首页 > PHP

php分页代码简单实现

2026-01-13 13:01:56PHP

基本分页实现

在PHP中实现分页功能通常需要结合MySQL的LIMIT子句。以下是一个基础实现示例:

<?php
// 数据库连接
$conn = mysqli_connect("localhost", "username", "password", "database");

// 每页显示数量
$perPage = 10;

// 当前页码(从URL参数获取)
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$start = ($page - 1) * $perPage;

// 获取总记录数
$totalQuery = "SELECT COUNT(*) FROM your_table";
$totalResult = mysqli_query($conn, $totalQuery);
$totalRows = mysqli_fetch_row($totalResult)[0];
$totalPages = ceil($totalRows / $perPage);

// 获取当前页数据
$query = "SELECT * FROM your_table LIMIT $start, $perPage";
$result = mysqli_query($conn, $query);

// 显示数据
while ($row = mysqli_fetch_assoc($result)) {
    echo $row['column_name']."<br>";
}

// 生成分页链接
for ($i = 1; $i <= $totalPages; $i++) {
    echo "<a href='?page=$i'>$i</a> ";
}
?>

使用PDO实现分页

PDO方式更安全,推荐使用:

php分页代码简单实现

<?php
$pdo = new PDO("mysql:host=localhost;dbname=database", "username", "password");

$perPage = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $perPage;

// 获取总记录数
$stmt = $pdo->query("SELECT COUNT(*) FROM your_table");
$totalRows = $stmt->fetchColumn();
$totalPages = ceil($totalRows / $perPage);

// 获取当前页数据
$stmt = $pdo->prepare("SELECT * FROM your_table LIMIT :offset, :perPage");
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->bindValue(':perPage', $perPage, PDO::PARAM_INT);
$stmt->execute();

// 显示数据
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo $row['column_name']."<br>";
}

// 分页导航
for ($i = 1; $i <= $totalPages; $i++) {
    echo "<a href='?page=$i'>$i</a> ";
}
?>

分页样式优化

可以添加CSS样式美化分页导航:

php分页代码简单实现

<style>
.pagination {
    display: inline-block;
    margin: 20px 0;
}
.pagination a {
    color: black;
    float: left;
    padding: 8px 16px;
    text-decoration: none;
    border: 1px solid #ddd;
}
.pagination a.active {
    background-color: #4CAF50;
    color: white;
    border: 1px solid #4CAF50;
}
.pagination a:hover:not(.active) {
    background-color: #ddd;
}
</style>

<div class="pagination">
    <?php for ($i = 1; $i <= $totalPages; $i++): ?>
        <a href="?page=<?= $i ?>" <?= ($i == $page) ? 'class="active"' : '' ?>><?= $i ?></a>
    <?php endfor; ?>
</div>

分页函数封装

可以将分页逻辑封装为可重用函数:

function getPaginationData($table, $perPage = 10, $pageParam = 'page') {
    global $pdo;

    $page = isset($_GET[$pageParam]) ? (int)$_GET[$pageParam] : 1;
    $offset = ($page - 1) * $perPage;

    $totalStmt = $pdo->query("SELECT COUNT(*) FROM $table");
    $totalRows = $totalStmt->fetchColumn();
    $totalPages = ceil($totalRows / $perPage);

    $stmt = $pdo->prepare("SELECT * FROM $table LIMIT :offset, :perPage");
    $stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
    $stmt->bindValue(':perPage', $perPage, PDO::PARAM_INT);
    $stmt->execute();

    return [
        'data' => $stmt->fetchAll(PDO::FETCH_ASSOC),
        'current_page' => $page,
        'total_pages' => $totalPages,
        'total_rows' => $totalRows
    ];
}

// 使用示例
$result = getPaginationData('your_table');
foreach ($result['data'] as $row) {
    echo $row['column_name']."<br>";
}

分页安全注意事项

为防止SQL注入,务必使用参数化查询。避免直接将用户输入拼接到SQL语句中。

对于大型数据集,考虑添加索引优化查询性能。如果数据量极大(百万级以上),可能需要考虑更高级的分页技术如"seek method"或缓存策略。

标签: 分页代码
分享给朋友:

相关文章

vue实现下拉分页思想

vue实现下拉分页思想

实现下拉分页的核心思想 下拉分页(无限滚动)的核心是通过监听滚动事件,在用户滚动到接近底部时自动加载下一页数据。Vue中可以通过结合v-for渲染列表、计算滚动位置以及管理分页状态来实现。 监听滚…

vue router实现分页

vue router实现分页

Vue Router 实现分页的方法 在 Vue.js 中,可以通过 Vue Router 实现分页功能,通常需要结合路由参数和动态路由匹配。以下是几种常见的实现方式: 使用查询参数实现分页 在路由…

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

vue实现后台分页

vue实现后台分页

实现后台分页的方法 在Vue中实现后台分页通常需要结合前端和后端逻辑,后端负责处理数据分页,前端负责展示分页数据和交互。以下是具体实现方法: 后端API设计 后端需要提供支持分页的API接口,通常…

vue实现分页

vue实现分页

Vue 实现分页的方法 使用 Element UI 的分页组件 Element UI 提供了现成的分页组件 el-pagination,适合快速集成到 Vue 项目中。 安装 Element UI:…

vue本地查询代码实现

vue本地查询代码实现

Vue 本地查询代码实现 在Vue中实现本地查询功能,可以通过以下几种方式实现,具体取决于数据源和查询需求。 使用计算属性进行本地查询 计算属性是Vue中处理响应式数据查询的高效方式,适合基于现有数…