如何在SQL中对选中的表和行进行加减乘除运算?
下面是示例代码,我手动减去原始数量以创建新数量并更新到所选行:
$idArr = $_POST['checkboxId']; foreach($idArr as $index=>$value) { $id = mysql_real_escape_string($value); // Get Quantity from this item id $sql = "SELECT quantity FROM items WHERE item_id = '$id'"; $result = mysql_query($sql); $quantity = $row['quantity']; // New quantity after minus by 1 $new_quantity = $row['quantity'] - 1; // Update new quantity to this item $sql = "UPDATE items SET quantity = '$new_quantity' WHERE item_id = '$id'"; $result = mysql_query($sql); }
这是更新首选行中数量(整数)变化的实用方法吗? 我可以使用单个更新查询来做到这一点吗?
最佳答案
为什么不直接将操作放在 SQL update
查询中?
例如,您可能有这样的查询:
UPDATE items SET quantity = quantity - 1 WHERE item_id = '$id'
或者:
UPDATE items SET quantity = quantity + 1 WHERE item_id = '$id'
巨大优势:这是在单个 SQL 查询中完成的(没有select
,然后是update
);这意味着如果两个用户同时尝试执行此操作不会有问题:SQL 将处理并发性,并一个接一个地执行查询。
根据您最初的解决方案,您可能会遇到(如果您很不走运——但这种情况会发生):
- 第一个用户执行
选择
,得到 5 作为数量 - 第二个用户执行
选择
,得到 5 作为数量 - 第一个用户
更新
到4 - 第二个用户也
更新
到 4...但是,它应该已经更新到 3 了!
关于php - 在 Update SQL 中执行 OPERATION(加、减、乘、除),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5537471/