php - 在 Update SQL 中执行 OPERATION(加、减、乘、除)

标签 php mysql

如何在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/

相关文章:

mysql - 插入数据库时​​的整数

java - JDBCResourceDAO 无法删除 id 的资源 - WSO2 API Manager

php - PHP MYSQL PREPARE语法问题(意外T_STRING)

php - WebView 中的按钮链接回另一个应用程序 Activity

php - MySQL 数据库中的唯一值

php - Codeigniter和Oracle获取插入查询的last_id

php - 如何设置 PHP 脚本的最长执行时间?

mysql - 连接表时使用最近的日期来查找缺失的日期

php - WordPress 插件激活/停用功能未触发

mysql - 仅当新值不为空时才在 DUPLICATE KEY UPDATE 上合并两个表