用数组更新sql值,数组中有几次出现项


updating sql values with array which have a couple times occured items

在编写购物网站代码时,我需要更新产品库存。但问题是,购物车自然会有几次相同的商品。更新它的最佳方式是什么?

我尝试了IN,但下面的SQL查询返回了3项。

SELECT * 
FROM  `products` 
WHERE id
IN ( 3, 4, 4, 6 ) 
LIMIT 0 , 30

这是我的解决方案,但我认为这不是最好的解决方案。

$cart = array(1,3,4,4,5,8,22,22);
$itemlist = array_count_values($cart);
foreach($itemlist as $itemid=>$ocurrence){
    $SQL = "UPDATE products SET stock = stock-".$ocurrence." WHERE id = ".$itemid;
    mysql_query($SQL);
}

您可以这样做:

SELECT * FROM menu WHERE item_id = 1
  UNION ALL
SELECT * FROM menu WHERE item_id = 1
  UNION ALL
SELECT * FROM menu WHERE item_id = 2

检查此链接:MySQL表->您能在同一个查询中多次返回同一行吗?

如果可能的话,创建一个单独的item_cart表,该表将以(cart_id,item_id,product_id)作为主键。在这里,您可以在productid上进行分组,查看售出的产品数量。

select product_id, count(product_id) as "No of Product Sold" from item_cart
group by product_id

您的php代码将完美地更新库存中的任何产品。

如果可能的话,您可以尝试在销售任何产品时设置更新库存列的触发器。