php实现分页增删改差
PHP实现分页增删改查
分页增删改查(CRUD)是Web开发中的常见需求,以下是实现方法:
数据库连接
使用PDO连接数据库,确保安全性:
$dsn = 'mysql:host=localhost;dbname=test';
$user = 'username';
$pass = 'password';
try {
$pdo = new PDO($dsn, $user, $pass);
} catch (PDOException $e) {
die('Connection failed: ' . $e->getMessage());
}
分页查询
计算总记录数和分页参数:
$perPage = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $perPage;
$total = $pdo->query('SELECT COUNT(*) FROM products')->fetchColumn();
$totalPages = ceil($total / $perPage);
$stmt = $pdo->prepare('SELECT * FROM products LIMIT :offset, :perPage');
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->bindValue(':perPage', $perPage, PDO::PARAM_INT);
$stmt->execute();
$products = $stmt->fetchAll(PDO::FETCH_ASSOC);
分页导航
生成分页链接:

echo '<div class="pagination">';
for ($i = 1; $i <= $totalPages; $i++) {
echo '<a href="?page='.$i.'"'.($page==$i?' class="active"':'').'>'.$i.'</a>';
}
echo '</div>';
添加数据
处理表单提交并插入数据:
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add'])) {
$name = $_POST['name'];
$price = $_POST['price'];
$stmt = $pdo->prepare('INSERT INTO products (name, price) VALUES (?, ?)');
$stmt->execute([$name, $price]);
header('Location: '.$_SERVER['PHP_SELF']);
exit;
}
更新数据
获取并更新指定记录:

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['update'])) {
$id = $_POST['id'];
$name = $_POST['name'];
$price = $_POST['price'];
$stmt = $pdo->prepare('UPDATE products SET name=?, price=? WHERE id=?');
$stmt->execute([$name, $price, $id]);
header('Location: '.$_SERVER['PHP_SELF']);
exit;
}
删除数据
处理删除请求:
if (isset($_GET['delete'])) {
$id = (int)$_GET['delete'];
$stmt = $pdo->prepare('DELETE FROM products WHERE id=?');
$stmt->execute([$id]);
header('Location: '.$_SERVER['PHP_SELF']);
exit;
}
表单模板
创建编辑表单:
<form method="post">
<input type="hidden" name="id" value="<?=isset($editProduct['id'])?$editProduct['id']:''?>">
<input type="text" name="name" value="<?=isset($editProduct['name'])?$editProduct['name']:''?>" required>
<input type="number" name="price" value="<?=isset($editProduct['price'])?$editProduct['price']:''?>" required>
<button type="submit" name="<?=isset($editProduct['id'])?'update':'add'?>">
<?=isset($editProduct['id'])?'Update':'Add'?>
</button>
</form>
数据显示
渲染数据表格:
echo '<table>';
echo '<tr><th>ID</th><th>Name</th><th>Price</th><th>Actions</th></tr>';
foreach ($products as $product) {
echo '<tr>';
echo '<td>'.$product['id'].'</td>';
echo '<td>'.$product['name'].'</td>';
echo '<td>'.$product['price'].'</td>';
echo '<td><a href="?edit='.$product['id'].'">Edit</a> | ';
echo '<a href="?delete='.$product['id'].'" onclick="return confirm(\'Are you sure?\')">Delete</a></td>';
echo '</tr>';
}
echo '</table>';
注意事项
- 所有用户输入必须经过验证和过滤
- 使用预处理语句防止SQL注入
- 考虑添加CSRF保护
- 实现错误处理机制
- 对于大型数据集考虑优化查询性能






