php mysql实现分页
PHP MySQL 分页实现方法
获取总记录数
需要先查询数据库获取总记录数,用于计算总页数。SQL语句示例:
SELECT COUNT(*) AS total FROM your_table;
计算分页参数
根据当前页码和每页显示的记录数计算分页参数:
$perPage = 10; // 每页记录数
$total = $totalRows; // 总记录数
$pages = ceil($total / $perPage); // 总页数
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1; // 当前页码
$start = ($page - 1) * $perPage; // 起始记录位置
查询分页数据
使用LIMIT子句获取当前页的数据:
SELECT * FROM your_table LIMIT $start, $perPage;
显示分页导航
生成分页链接供用户导航:
for ($i = 1; $i <= $pages; $i++) {
echo "<a href='?page=$i'>$i</a> ";
}
完整示例代码
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');
// 获取总记录数
$result = $conn->query("SELECT COUNT(*) AS total FROM your_table");
$row = $result->fetch_assoc();
$total = $row['total'];
// 分页参数
$perPage = 10;
$pages = ceil($total / $perPage);
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$start = ($page - 1) * $perPage;
// 获取当前页数据
$sql = "SELECT * FROM your_table LIMIT $start, $perPage";
$result = $conn->query($sql);
// 显示数据
while ($row = $result->fetch_assoc()) {
echo $row['field_name']."<br>";
}
// 显示分页导航
for ($i = 1; $i <= $pages; $i++) {
echo "<a href='?page=$i'>$i</a> ";
}
$conn->close();
优化建议
- 添加页码边界检查,确保不超出范围
- 使用预处理语句防止SQL注入
- 添加上一页/下一页按钮
- 实现更美观的分页样式
预处理语句实现
更安全的方式是使用预处理语句:

$stmt = $conn->prepare("SELECT * FROM your_table LIMIT ?, ?");
$stmt->bind_param("ii", $start, $perPage);
$stmt->execute();
$result = $stmt->get_result();






