在UPDATE期间递增SQL列

时间:2014-08-21 14:26:28

标签: php sql sql-server

我的user_account表包含我创建的名为donation_coins的列。

每当我执行UPDATE查询以将donation_coins设置为新值时,它只会删除旧值并重写为捐赠过程中定义的金额。

例如。如果x有10个donation_coins并再次捐赠15个硬币,他的donation_coins将是15而不是25。

字段类型为INT且启用了NULLS。

这是代码

connectdb($CONFIG['dbdbname'], $CONFIG['dbaddress'], $CONFIG['dbuser'], $CONFIG['dbpass']);

$query = mssql_query("SELECT * FROM user_account WHERE account = '".$account_username."'");
$row10 = mssql_fetch_array($query);

$old_coins = $row10['donation_coins'];
$transered_coins = $coin_quanity_coin;
$new_coins = $old_coins - $transered_coins;

//mssql_query("UPDATE [lin2db].[dbo].[user_account] SET [donation_coins] = '".$new_coins."' WHERE account = '".$account_username."'");
mssql_query("UPDATE [lin2db].[dbo].[user_account] SET [donation_coins] = donation_coins - ".$coin_quanity_coin." WHERE account = '".$account_username."'");

3 个答案:

答案 0 :(得分:4)

这样做

update your_table
set x = x + 15
where id = :someId

答案 1 :(得分:0)

另一种方法,如果> SQL Server 2005

update user_account
set donation_coins += 15
where id = @someid

答案 2 :(得分:0)

您只需为更新声明提供新硬币

mssql_query("UPDATE [lin2db].[dbo].[user_account] SET [donation_coins] = ".$new_coins." WHERE account = '".$account_username."'");

你刚刚在执行sql之前计算了新的数量。

干杯, 马丁