2011-06-21 45 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