【问题标题】: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);
}
}
【问题讨论】:
标签:
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);
}