首页 > 解决方案 > 更新数据库中的产品库存

问题描述

我想在购买后更新数据库中产品的库存数量。

我的代码已经可以正常工作了,但我想知道是否有最好的方法,只用一条 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();
  }
}

标签: phpmysqlsql

解决方案


我不知道这是否是更好的方法,但你可以试试这个 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 = ? )

推荐阅读