繁体   English   中英

用 mysql 更新股票价值

[英]Update stock value with mysql

现在我有这个 sql 更新代码:

$sql = "UPDATE products SET stock = stock - '$quantity' WHERE product_id = '$id'";

我对此有些疑问。 它有效,但如果表中的库存值小于网上商店购物车中的数量,它会将库存字段更新为负值。

我知道,为此,mysql 中有一个 function,只会将其更新为 0,而不是减号。 function 是什么,或者我应该怎么做?

你可以用例

UPDATE products SET stock 
  = case
     when stock > '$quantity' then stock - '$quantity' 
     else 0 end
WHERE product_id = '$id';

确保检查变量$quantity$id以确保它们是数字以避免 SQL 注入。

您可以为此使用MySQL IF 语句 首先检查stock - quantity是否大于 0 然后返回值,否则返回 0。

UPDATE products
SET stock = IF(stock - '$quantity' > 0, stock - '$quantity', 0) 
WHERE product_id = '$id';

您可以使用GREATEST function 来获取您现有计算的最大值或 0,然后如果当前计算为负数,则将插入 0。

我没有测试过这个,但这应该有效:

$sql = "UPDATE products SET stock = GREATEST(stock - '$quantity', 0) WHERE product_id = '$id'";

我只是要小心,因为您将$quantity$id直接传递给查询字符串,所以您不容易在此处进行 SQL 注入,如果这是来自$_POST$_GET请求变量,则可以操纵查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM