簡體   English   中英

使用php同時處理數據庫中的多個條目

[英]handle multiple entries at same time in database using php

我有一個拍賣表,其中有多個用戶競價拍賣

ID |  BidderID |  AuctionID |  HighestBidPrice
------------------------------------------------
1  |  1        |  35        |  100
2  |  2        |  35        |  200
3  |  3        |  35        |  200
4  |  2        |  35        |  300
5  |  3        |  35        |  300

當2個用戶同時出價時,兩個出價都將插入到表格中。 我正在嘗試編寫代碼來處理特定的AuctionID的這種類型的死鎖條件。 用戶甚至不應插入比最后HighestBidPrice少的價格。

我通過查詢查詢表中的條件

$last_bid = $this->db->query("select * from Auction as A where A.AuctionID = 35 order by ID desc limit 1")->result_array();

首先,我得到最后的最高出價,然后檢查

if($last_bid){
        if(isset($last_bid[0]['HighestBidPrice']) && $last_bid[0]['HighestBidPrice']!=""){
            if($last_bid[0]['HighestBidPrice'] === $_POST['HighestBidPrice']){
                echo "The Bid with this price already made.";
            }
            if($last_bid[0]['HighestBidPrice'] >= $_POST['HighestBidPrice']){
                echo "The Bid price is less then Highest Bid Price.";
            }
        }
    }

即使多個用戶同時插入一個出價,兩個人也都可以進行出價。

交易能夠解決這個問題嗎?

您可以通過以下方式做到這一點:

insert into auction (BidderID, AuctionID, HighestBidPrice)
select 10, 20, 500
where (SELECT max(HighestBidPrice) FROM auction WHERE AuctionID = 20) < 500;

僅當該特定AuctionID的最高出價率小於500時,才會插入新的拍賣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM