2つのテーブルを使用してphpmySQL(MyISAM)とPDOを使用して、制限または最大入札シナリオでオークションシステムを開発しています
競売
Id | title | seller | currentbid | limit(max bid) | dated | bidder
入札
Id | auctionid | bid | bidder | dated
ユーザーが入札した後、次のことが起こります(私はPDOプリペアドステートメントを使用しています)
$record = fetch (‘Select * from auction where id = :id’, array(‘id’ => $id))
$increment = 1;
$postedBid = $_REQUEST[‘postedBid’];
$currentBid = $record[‘currentbid’];
$limitBid = $record[‘limit’];
If($postedBid < $currentBid + $increment){
Return;(without processing bid!)
}else{
If($limitBid !> $postedBid){
Insert into bids (auctionid, bid, bidder, dated(timestamp)) values ($auctioned, $postedBid, ……);
Update auction set currentbid = $postedBid, limit = $postedBid ….
}else{
Insert into bids (auctionid, bid, bidder, dated(timestamp)) values ($auctioned, $postedBid, ……);
Insert into bids (auctionid, bid, bidder, dated(timestamp)) values ($auctioned, $postedBid + $increment, ……);
Update auction set currentbid = $postedBid + increment, limit = $limitBid ….
}
}
2つのことを知りたい
1-このアプローチに問題がない場合、どうすればこれを改善できますか
2-どうすれば同時入札を回避できますか。PDOを使用してロックを適用する方法がわかりません。この問題に対処するために、ロックまたはその他のアプローチを使用したクエリの例を評価してください
ありがとう
(混合タイプのコードを使用してお詫びします)