php实现批号控制
PHP 实现批号控制的方法
批号控制通常用于管理产品的生产批次、库存跟踪等场景。以下是几种常见的实现方式:
数据库设计 创建批次表存储批号信息,例如:
CREATE TABLE batches (
id INT AUTO_INCREMENT PRIMARY KEY,
batch_number VARCHAR(50) NOT NULL,
product_id INT NOT NULL,
production_date DATE,
expiry_date DATE,
quantity INT,
FOREIGN KEY (product_id) REFERENCES products(id)
);
生成批号 使用日期、产品ID等组合生成唯一批号:

function generateBatchNumber($productId) {
$date = date('Ymd');
$random = mt_rand(1000, 9999);
return "BATCH-{$date}-{$productId}-{$random}";
}
批次入库 处理产品入库时关联批号:
$batchNumber = generateBatchNumber($productId);
$stmt = $pdo->prepare("INSERT INTO batches (batch_number, product_id, production_date, quantity) VALUES (?, ?, ?, ?)");
$stmt->execute([$batchNumber, $productId, $productionDate, $quantity]);
批次查询 按批号查询产品信息:

function getBatchInfo($batchNumber) {
$stmt = $pdo->prepare("SELECT * FROM batches WHERE batch_number = ?");
$stmt->execute([$batchNumber]);
return $stmt->fetch(PDO::FETCH_ASSOC);
}
批次更新 更新批次库存数量:
function updateBatchQuantity($batchNumber, $quantityChange) {
$pdo->beginTransaction();
$stmt = $pdo->prepare("UPDATE batches SET quantity = quantity + ? WHERE batch_number = ?");
$stmt->execute([$quantityChange, $batchNumber]);
$pdo->commit();
}
批次有效期检查 检查批次是否过期:
function checkBatchExpiry($batchNumber) {
$batch = getBatchInfo($batchNumber);
$today = new DateTime();
$expiryDate = new DateTime($batch['expiry_date']);
return $today < $expiryDate;
}
注意事项
- 批号生成算法需保证唯一性
- 关键操作应使用数据库事务
- 考虑添加批次状态字段(如可用/已用完/已过期)
- 重要操作应记录日志
以上方法可根据实际业务需求进行调整,如添加供应商信息、存储位置等字段。






