MYSQL在PHP循环时更新和删除查询

时间:2017-04-17 06:36:01

标签: php mysql sql while-loop sql-delete

我正在尝试更新用户投资组合表,以便在用户销售某个商品的份额时进行更新。我想从股票中减去一个,直到卖出的所需股票数量达到0.然后当该项目的股票达到0时,我想从用户投资组合中删除该行。我相信我必须使用while循环和TOP命令,因为用户经常对同一项进行许多不同的购买,因此它们存储在表中的不同记录中。我觉得我非常接近但我无法在循环中获得更新或删除查询来运行。

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);
 }
}

2 个答案:

答案 0 :(得分: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";

使用限制代替顶部

答案 1 :(得分:0)

..当交易开始时,在某处调用以下代码..

$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);
}