php - 更新数据库中的产品库存
问题描述
我想在购买后更新数据库中产品的库存数量。
我的代码已经可以正常工作了,但我想知道是否有最好的方法,只用一条 SQL 语句?
// All the product in the member's cart
if ($stmt = $conn->prepare("SELECT product_id, quantity FROM tbl_cart WHERE member_id = ?")) {
$stmt->bind_param("i", $memberId);
$stmt->execute();
$result = $stmt->get_result();
$stmt->close();
$cartItem = $result->fetch_all(MYSQLI_ASSOC);
// Set the quantity after purchase
foreach ($cartItem as $key => $item) {
$stmt = $conn->prepare("UPDATE tbl_product SET stock = stock-? WHERE id = ?");
$stmt->bind_param("ii", $item['quantity'], $item['product_id']);
$stmt->execute();
$stmt->close();
}
}
解决方案
我不知道这是否是更好的方法,但你可以试试这个 Sql 语句。
UPDATE tbl_product
SET stock = stock - ( SELECT quantity FROM tbl_cart
WHERE product_id = tbl_product.id AND member_id = ? )
WHERE id IN ( SELECT product_id FROM tbl_cart WHERE member_id = ? )
推荐阅读
- javascript - 如何在 Next.js 中存储生产中的文件?
- css - 使用三次贝塞尔曲线和动画时序更改电子窗口的宽度、高度、X、Y
- ruby - 在雪花中实现客户端加密时出错
- flutter - 在 ListTile 中使用 onTap 函数时出错
- r - 使用点从栅格数据集中快速提取 - 如何加速 raster::extract() 函数
- javascript - 如何通过单击元素旁边的按钮添加删除线属性?
- css - Flex 对齐内容中心和左/右对齐项目
- c - 如何使用 BPF(PROG_TYPE_SOCKET_FILTER) 过滤网络流量?
- azure - 如何使用 Azure SDK 获取 ASC(Azure 安全中心)位置
- r - 如何利用两个分类列在 R 中创建一个百分比列?