2011-06-21 88 views
3

我知道有一种方法可以做到这一点。基本上我有变量$amount,并希望从表股票的列数量。PHP MySQL更新减号变量没有单独的SELECT查询

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

运行单个更新的语法将会减去该值。

所有帮助表示赞赏。

回答

8

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

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

变量$amount被认为是正确转义已,根据您所使用,或更好,但MySQL的API,参数,以事先准备好的例子,如PDO:

$qry = "UPDATE table SET column = (column - :amount) WHERE somecondition;"; 
$stmt = $db->prepare($qry); 
$stmt->execute(array(':amount' => $amount)); 
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 
0

要在下面吗?

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

出于好奇你是从一些其他的SQL选择获取$变量?像也许是一个零件清单或什么?在存储过程或化合物选择中运行整个事件可能会快得多。

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

+0

静态,但感谢您的建议 – Somk

+0

啊,在那导致+1迈克尔 – meteorainer