当前位置:首页 > PHP

php实现分页增删改差

2026-01-29 06:19:53PHP

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);

分页导航

生成分页链接:

php实现分页增删改差

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;
}

更新数据

获取并更新指定记录:

php实现分页增删改差

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保护
  • 实现错误处理机制
  • 对于大型数据集考虑优化查询性能

标签: 分页php
分享给朋友:

相关文章

vue实现选项卡分页

vue实现选项卡分页

Vue实现选项卡分页的方法 使用动态组件切换 通过Vue的<component :is="currentTab">动态加载不同组件,结合v-for循环渲染选项卡标题,点击时切换curr…

react 如何分页

react 如何分页

分页实现方法 在React中实现分页功能可以通过多种方式完成,具体取决于数据来源(如API或本地数据)和UI库的选择。以下是常见的实现方法: 使用本地数据分页 对于存储在组件状态或Contex…

php实现文件下载

php实现文件下载

PHP实现文件下载的方法 通过PHP实现文件下载功能,可以采用多种方式,以下是几种常见的实现方法: 使用header()函数强制下载 设置HTTP头信息,强制浏览器下载文件而非直接打开: $fi…

php实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 //…

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必…