2017-04-17 104 views
0

我想更新用戶組合表更新時,用戶出售一個項目的份額。我想從股票中減去一個,直到所需的出售股數達到0。然後,當該項目的股票達到0時,我想從用戶組合中刪除該行。我相信我必須使用while循環和TOP命令,因爲用戶經常對同一個項目進行多次不同的購買,因此它們被存儲在表格中的不同記錄中。我想我是非常接近,但我不能讓我的循環中的更新或刪除查詢運行。MYSQL更新和刪除查詢在PHP while循環

while ($sharesToSell >0) 
{ 
$sql="UPDATE TOP (1) portfolio SET shares= shares-1 WHERE 
userid='".$userid."'AND songid='".$songID."';"; 
$result6 = $connection->query($sql); 
$sharesToSell-=1; 
if($sharesToSell>0) 
{ 
    $sql="DELETE FROM PORTFOLIO WHERE shares='0';"; 
    $result7 = $connection->query($sql); 
} 
} 
+1

MySQL中沒有'TOP',使用'LIMIT'代替。 – endo64

回答

0

更新你的第一個查詢,並使用limit代替top

$sql="UPDATE TOP (1) portfolio SET shares= shares-1 WHERE 
userid='".$userid."'AND songid='".$songID."';"; 

$sql="UPDATE portfolio SET shares= shares-1 WHERE 
userid='".$userid."'AND songid='".$songID."' limit 1"; 

使用限制,而不是頂部

0

..Somewhere下面的代碼調用時,交易是開始..

$sql="Select shares From portfolio WHERE 
userid='".$userid."'AND songid='".$songID."';"; 
$result = $connection->query($sql); 

$row = $result->fetch_assoc() 
$sharesToSell = $row["shares"] 

if($sharesToSell > 0) 
{ 
    $sql="UPDATE portfolio SET shares = shares-1 WHERE 
    userid='".$userid."'AND songid='".$songID."';"; 
    $result = $connection->query($sql); 
}else 
{ 
    $sql="DELETE FROM PORTFOLIO WHERE 
    userid='".$userid."'AND songid='".$songID."';"; 
    $result = $connection->query($sql); 
}