2017-04-17 17 views
0

ユーザーがアイテムのシェアを販売したときに更新するユーザーポートフォリオテーブルを更新しようとしています。私はヒット数を売るために必要な数の株式がなくなるまで株式から1つを差し引いています。そして、その株式の株式が0になると、その行をユーザーのポートフォリオから削除します。私はwhileループとTOPコマンドを使用しなければならないと信じています。なぜなら、ユーザーはしばしば同じアイテムを多数購入してテーブルの異なるレコードに格納するからです。私はかなり近いと思うが、実行するために私のループ内の更新または削除クエリを取得することはできません。PHPのループ中にMYSQLを更新および削除する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

代わりに取引がスタートされたときに、コードの下にコールする

0

..Somewhereトップあなたの最初のクエリを更新し、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"; 

に使用制限を使用..

$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); 
} 
関連する問題