【问题标题】:MYSQL update and delete query in PHP while loopPHP while循环中的MYSQL更新和删除查询
【发布时间】:2017-09-12 18:30:43
【问题描述】:

我正在尝试更新用户投资组合表,以便在用户出售某项商品的份额时进行更新。我想从股票中减去一个,直到想要出售的股票数量达到 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);
 }
}

【问题讨论】:

  • MySQL中没有TOP,请改用LIMIT

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


【解决方案1】:

更新您的第一个查询并使用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";

使用限制代替顶部

【讨论】:

    【解决方案2】:

    ..当事务开始时调用下面代码的地方..

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      • 2023-03-30
      • 2021-05-06
      • 2014-11-29
      • 2019-02-01
      相关资源
      最近更新 更多