php实现添加商品
添加商品功能实现
在PHP中实现添加商品功能通常涉及数据库操作和表单处理。以下是实现步骤:

数据库表设计
创建商品表(示例SQL):

CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL,
description TEXT,
stock INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
表单页面(add_product.php)
<form action="process_product.php" method="post">
<label>商品名称:</label>
<input type="text" name="name" required>
<label>价格:</label>
<input type="number" step="0.01" name="price" required>
<label>描述:</label>
<textarea name="description"></textarea>
<label>库存:</label>
<input type="number" name="stock" value="0">
<button type="submit">添加商品</button>
</form>
处理逻辑(process_product.php)
<?php
// 连接数据库
$db = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
// 获取表单数据
$name = $_POST['name'];
$price = $_POST['price'];
$description = $_POST['description'];
$stock = $_POST['stock'] ?? 0;
// 准备SQL语句
$stmt = $db->prepare("INSERT INTO products (name, price, description, stock) VALUES (?, ?, ?, ?)");
// 执行插入
if($stmt->execute([$name, $price, $description, $stock])) {
echo "商品添加成功";
// 可以重定向到商品列表页
// header('Location: product_list.php');
} else {
echo "添加失败: " . $stmt->errorInfo()[2];
}
?>
安全增强措施
// 过滤输入数据
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
$price = filter_input(INPUT_POST, 'price', FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$description = filter_input(INPUT_POST, 'description', FILTER_SANITIZE_STRING);
$stock = filter_input(INPUT_POST, 'stock', FILTER_SANITIZE_NUMBER_INT);
// 使用预处理语句防止SQL注入(已在上面示例中体现)
文件上传功能
如需上传商品图片:
<form enctype="multipart/form-data">
<input type="file" name="product_image">
</form>
// 处理上传
if(isset($_FILES['product_image'])) {
$targetDir = "uploads/";
$targetFile = $targetDir . basename($_FILES["product_image"]["name"]);
// 检查文件类型
$imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
$allowedTypes = ['jpg', 'png', 'jpeg', 'gif'];
if(in_array($imageFileType, $allowedTypes)) {
move_uploaded_file($_FILES["product_image"]["tmp_name"], $targetFile);
// 将文件路径保存到数据库
}
}
完整MVC实现建议
对于大型项目,建议采用MVC架构:
- 创建Product模型类处理数据操作
- 使用控制器接收请求并调用模型
- 通过视图渲染表单和结果显示
这种结构更易于维护和扩展。






