我目前正在開發一個拍賣網站作爲投資組合項目的一部分,我遇到了一個似乎無法解決的有趣問題。MySQL交易 - 在隊列中處理的拍賣出價插入?
目前我正在檢查當前最高出價(查詢1),然後如果出價高於當前存儲的出價,那麼我將新出價插入數據庫(查詢2)。公平的基本邏輯,顯然如果出價低於用戶最終將被通知。
Query 1:
$result = mysql_query("SELECT * FROM bids WHERE item_id = '".$_POST['id']."' ORDER BY bids.amount DESC LIMIT 1");
Query 2:
$query = sprintf("INSERT INTO bids(item_id,buyer_id,amount,created) VALUES('%s','%s','%s',NOW())",
mysql_real_escape_string($item_id),
mysql_real_escape_string($user_id),
mysql_real_escape_string($amount));
注:我知道有重大的安全問題與此代碼,但是這僅僅是一個例子...
不過,我不確定是否會有地方檢查的間隙的情況價格並插入到數據庫中,另一個查詢可能會更快,插入到數據庫中,然後破壞當前的出價邏輯。
將使用足以確保出價正確排隊的mysqli或PDO驅動程序的交易?
MySQL是否提供排隊mysql查詢的方法來確保這不會發生?
也許,此刻我存儲每個投標拍賣,但我並不真的需要保留這些。鎖定行肯定是解決問題的一種方法! – 2012-01-13 23:06:45