PHP MySQL Update减去没有单独SELECT查询的变量

时间:2011-06-21 19:09:21

标签: php mysql sql

我知道有办法做到这一点。基本上我有变量$amount,并希望从表格库中的列数量中取出它。

问题是我通常运行一个select查询找出值然后扣除变量并运行另一个更新查询。

运行单个更新的语法是什么,只会减去该值。

所有帮助表示赞赏。

4 个答案:

答案 0 :(得分:9)

它看起来很简单。在此示例中,括号是可选的。请务必在WHERE条款中使用适当的条件!

$qry = "UPDATE table SET column = (column - $amount) WHERE somecondition;";

根据您正在使用的MySQL API,假设变量$amount已经正确转义,或者更好的是,这是一个准备好的示例的参数,如在PDO中:

$qry = "UPDATE table SET column = (column - :amount) WHERE somecondition;";
$stmt = $db->prepare($qry);
$stmt->execute(array(':amount' => $amount));

答案 1 :(得分:1)

尝试这样的事情:

UPDATE table_name SET amount = amount - $amount WHERE primary_key = value LIMIT 1

如果您想确保amount不低于零:

UPDATE table_name SET amount = amount - $amount WHERE primary_key = value AND amount >= $amount LIMIT 1

答案 2 :(得分:0)

你想要下面的吗?

UPDATE table_name
SET amount = amount -$amount
WHERE primary = id

答案 3 :(得分:0)

出于好奇,你从其他一些sql select获得$ variable?或许像零件清单或其他什么?在存储过程或复合选择中运行整个事物可能会快得多。

如果该$变量是静态的或本地生成的忽略。