以下是一个简单的PHP秒杀代码示例:
<?php
// 设置时区
date_default_timezone_set('Asia/Shanghai');
// 连接数据库
$host = 'localhost';
$dbname = 'test';
$username = 'root';
$password = '';
try {
$db = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
} catch (PDOException $e) {
die("数据库连接失败:" . $e->getMessage());
}
// 秒杀商品ID
$productId = 1;
// 秒杀开始时间和结束时间
$startTime = strtotime('2022-01-01 00:00:00');
$endTime = strtotime('2022-01-01 23:59:59');
// 当前时间
$currentTime = time();
// 检查秒杀时间
if ($currentTime < $startTime) {
die("秒杀尚未开始");
}
if ($currentTime > $endTime) {
die("秒杀已结束");
}
// 检查库存
$stock = 10; // 假设库存为10
if ($stock <= 0) {
die("商品已售罄");
}
// 检查用户是否已秒杀过
$userId = 1; // 假设用户ID为1
$stmt = $db->prepare("SELECT COUNT(*) FROM orders WHERE user_id = :user_id AND product_id = :product_id");
$stmt->bindParam(':user_id', $userId);
$stmt->bindParam(':product_id', $productId);
$stmt->execute();
if ($stmt->fetchColumn() > 0) {
die("您已经参与过秒杀");
}
// 执行秒杀操作
try {
$db->beginTransaction();
// 减少库存
$stmt = $db->prepare("UPDATE products SET stock = stock - 1 WHERE id = :product_id");
$stmt->bindParam(':product_id', $productId);
$stmt->execute();
// 创建订单
$stmt = $db->prepare("INSERT INTO orders (user_id, product_id, create_time) VALUES (:user_id, :product_id, :create_time)");
$stmt->bindParam(':user_id', $userId);
$stmt->bindParam(':product_id', $productId);
$stmt->bindParam(':create_time', date('Y-m-d H:i:s'));
$stmt->execute();
$db->commit();
echo "秒杀成功";
} catch (PDOException $e) {
$db->rollBack();
die("秒杀失败:" . $e->getMessage());
}
以上代码实现了一个简单的秒杀功能,包括检查秒杀时间、库存、用户是否已参与秒杀等。如果满足条件,将减少库存并创建订单,否则返回相应的错误信息。请根据实际需求进行相应的修改和优化。
上一篇:php取html结果
下一篇:php去除数组中元素
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站