php购物车实现
PHP 购物车实现
数据库设计
创建一个简单的数据库表结构来存储购物车数据:
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL,
description TEXT
);
CREATE TABLE cart (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
product_id INT,
quantity INT DEFAULT 1,
FOREIGN KEY (product_id) REFERENCES products(id)
);
添加商品到购物车
使用 PHP 和 MySQL 将商品添加到购物车:
<?php
session_start();
$db = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
if (isset($_POST['add_to_cart'])) {
$product_id = $_POST['product_id'];
$user_id = $_SESSION['user_id'];
$stmt = $db->prepare("INSERT INTO cart (user_id, product_id, quantity) VALUES (?, ?, 1) ON DUPLICATE KEY UPDATE quantity = quantity + 1");
$stmt->execute([$user_id, $product_id]);
}
?>
显示购物车内容
从数据库中检索并显示购物车中的商品:

<?php
session_start();
$db = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
$user_id = $_SESSION['user_id'];
$stmt = $db->prepare("SELECT p.id, p.name, p.price, c.quantity FROM cart c JOIN products p ON c.product_id = p.id WHERE c.user_id = ?");
$stmt->execute([$user_id]);
$cart_items = $stmt->fetchAll();
foreach ($cart_items as $item) {
echo "Product: {$item['name']}, Price: {$item['price']}, Quantity: {$item['quantity']}<br>";
}
?>
更新购物车数量
允许用户更新购物车中商品的数量:
<?php
if (isset($_POST['update_cart'])) {
$product_id = $_POST['product_id'];
$quantity = $_POST['quantity'];
$user_id = $_SESSION['user_id'];
$stmt = $db->prepare("UPDATE cart SET quantity = ? WHERE user_id = ? AND product_id = ?");
$stmt->execute([$quantity, $user_id, $product_id]);
}
?>
从购物车中移除商品
提供移除商品的选项:

<?php
if (isset($_POST['remove_from_cart'])) {
$product_id = $_POST['product_id'];
$user_id = $_SESSION['user_id'];
$stmt = $db->prepare("DELETE FROM cart WHERE user_id = ? AND product_id = ?");
$stmt->execute([$user_id, $product_id]);
}
?>
计算总价
计算购物车中所有商品的总价格:
<?php
$total = 0;
foreach ($cart_items as $item) {
$total += $item['price'] * $item['quantity'];
}
echo "Total: $total";
?>
使用会话存储购物车(无数据库方案)
如果不想使用数据库,可以使用 PHP 会话存储购物车数据:
<?php
session_start();
if (!isset($_SESSION['cart'])) {
$_SESSION['cart'] = [];
}
if (isset($_POST['add_to_cart'])) {
$product_id = $_POST['product_id'];
if (isset($_SESSION['cart'][$product_id])) {
$_SESSION['cart'][$product_id]++;
} else {
$_SESSION['cart'][$product_id] = 1;
}
}
?>
安全注意事项
- 对所有用户输入进行验证和过滤
- 使用预处理语句防止 SQL 注入
- 对敏感操作进行用户身份验证
- 考虑使用 CSRF 令牌
扩展功能建议
- 添加商品图片显示
- 实现优惠券和折扣系统
- 添加多货币支持
- 实现保存购物车功能
- 添加商品评价系统
这些代码片段提供了一个基本的 PHP 购物车实现框架,可以根据具体需求进行扩展和修改。






