当前位置:首页 > PHP

php商城购物车实现

2026-04-03 12:25:21PHP

数据库设计

购物车功能通常需要与数据库交互存储商品信息、用户选择和数量。常见的数据表结构如下:

cart表字段示例:

  • cart_id: 购物车记录ID(主键)
  • user_id: 用户ID(关联用户表)
  • product_id: 商品ID(关联商品表)
  • quantity: 商品数量
  • created_at: 创建时间
  • updated_at: 更新时间

添加商品到购物车

通过表单或AJAX提交商品ID和数量,后端处理数据并存入数据库:

php商城购物车实现

// 接收参数
$product_id = $_POST['product_id'];
$quantity = $_POST['quantity'] ?? 1; // 默认数量为1

// 验证商品是否存在(需连接数据库查询)
// ...

// 插入或更新购物车记录
$sql = "INSERT INTO cart (user_id, product_id, quantity) 
        VALUES (:user_id, :product_id, :quantity)
        ON DUPLICATE KEY UPDATE quantity = quantity + :quantity";
$stmt = $pdo->prepare($sql);
$stmt->execute([
    ':user_id' => $_SESSION['user_id'],
    ':product_id' => $product_id,
    ':quantity' => $quantity
]);

显示购物车列表

查询当前用户的购物车记录并关联商品表获取详细信息:

$sql = "SELECT c.*, p.name, p.price, p.image 
        FROM cart c 
        JOIN products p ON c.product_id = p.product_id
        WHERE c.user_id = :user_id";
$stmt = $pdo->prepare($sql);
$stmt->execute([':user_id' => $_SESSION['user_id']]);
$cart_items = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 计算总价
$total = array_reduce($cart_items, function($sum, $item) {
    return $sum + ($item['price'] * $item['quantity']);
}, 0);

更新购物车数量

通过AJAX实现实时修改商品数量:

php商城购物车实现

$cart_id = $_POST['cart_id'];
$new_quantity = $_POST['quantity'];

// 验证数量有效性
if ($new_quantity > 0) {
    $sql = "UPDATE cart SET quantity = :quantity WHERE cart_id = :cart_id AND user_id = :user_id";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([
        ':quantity' => $new_quantity,
        ':cart_id' => $cart_id,
        ':user_id' => $_SESSION['user_id']
    ]);
    echo json_encode(['success' => true]);
} else {
    echo json_encode(['error' => 'Invalid quantity']);
}

删除购物车商品

实现移除单件商品的功能:

$cart_id = $_POST['cart_id'];

$sql = "DELETE FROM cart WHERE cart_id = :cart_id AND user_id = :user_id";
$stmt = $pdo->prepare($sql);
$stmt->execute([
    ':cart_id' => $cart_id,
    ':user_id' => $_SESSION['user_id']
]);

// 返回剩余商品数量
$count = $pdo->query("SELECT COUNT(*) FROM cart WHERE user_id = {$_SESSION['user_id']}")->fetchColumn();
echo json_encode(['count' => $count]);

非登录用户购物车(Session实现)

对于未登录用户,可使用Session临时存储购物车数据:

// 添加商品
if (!isset($_SESSION['cart'])) {
    $_SESSION['cart'] = [];
}

$product_id = $_POST['product_id'];
if (isset($_SESSION['cart'][$product_id])) {
    $_SESSION['cart'][$product_id] += $quantity;
} else {
    $_SESSION['cart'][$product_id] = $quantity;
}

// 读取购物车
$cart_items = [];
foreach ($_SESSION['cart'] as $product_id => $quantity) {
    // 需查询商品表获取完整信息
    $product = getProductById($product_id);
    $cart_items[] = [
        'product_id' => $product_id,
        'quantity' => $quantity,
        'name' => $product['name'],
        'price' => $product['price']
    ];
}

安全性注意事项

  1. 对所有用户输入参数进行过滤和验证
  2. 使用预处理语句防止SQL注入
  3. 检查用户权限确保只能操作自己的购物车
  4. 对敏感操作(如删除)添加CSRF令牌保护

标签: 购物车商城
分享给朋友:

相关文章

vue商城登录实现

vue商城登录实现

实现 Vue 商城登录功能 前端部分 创建登录组件 在 src/views 目录下创建 Login.vue 文件,包含表单和基础样式: <template> <div clas…

php购物车怎么实现

php购物车怎么实现

实现PHP购物车的基本步骤 购物车功能通常包括添加商品、删除商品、更新数量、计算总价等核心功能。以下是一个基于Session的PHP购物车实现方案。 初始化购物车Session 在PHP脚本开头初始…

php 商城实现

php 商城实现

开发环境搭建 安装 PHP 环境(如 XAMPP、Laragon 或 Docker),确保支持 MySQL 数据库。推荐使用 PHP 7.4+ 和 MySQL 5.7+。 数据库设计 创建核心表…

好用的uniapp商城

好用的uniapp商城

开源项目推荐 VueShop 基于uniapp和uView UI的商城模板,包含商品展示、购物车、订单管理等基础功能,适合快速二次开发。 Mall-Cook 可视化拖拽生成的uniapp商城系统…

php实现购物车

php实现购物车

PHP实现购物车功能 购物车是电商网站的核心功能之一,PHP可以通过多种方式实现。以下是常见的实现方法: Session存储购物车数据 使用PHP的$_SESSION超全局变量存储购物车信息是最简…

php购物车实现原理

php购物车实现原理

PHP购物车实现原理 购物车功能通常基于会话(Session)或数据库存储实现,以下是核心实现方法: 基于Session的购物车 使用PHP的$_SESSION超全局变量临时存储用户选择的商品信息,…