[英]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.