Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP while循环中的MYSQL更新和删除查询_Php_Mysql_Sql_While Loop_Sql Delete - Fatal编程技术网

PHP while循环中的MYSQL更新和删除查询

PHP while循环中的MYSQL更新和删除查询,php,mysql,sql,while-loop,sql-delete,Php,Mysql,Sql,While Loop,Sql Delete,我正在尝试更新一个用户公文包表,以便在用户出售某个项目的份额时进行更新。我想从股票中减去一,直到所需的卖出股票数量达到0。然后,当该项目的份额达到0时,我想从用户组合中删除该行。我相信我必须使用while循环和TOP命令,因为用户经常对同一物品进行多次不同的购买,所以它们存储在表中的不同记录中。我想我已经很接近了,但是我无法在我的循环中运行update或delete查询 while ($sharesToSell >0) { $sql="UPDATE TOP (1) portfolio

我正在尝试更新一个用户公文包表,以便在用户出售某个项目的份额时进行更新。我想从股票中减去一,直到所需的卖出股票数量达到0。然后,当该项目的份额达到0时,我想从用户组合中删除该行。我相信我必须使用while循环和TOP命令,因为用户经常对同一物品进行多次不同的购买,所以它们存储在表中的不同记录中。我想我已经很接近了,但是我无法在我的循环中运行update或delete查询

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

更新您的第一个查询并使用
limit
代替
top

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


使用limit代替top

。在事务开始时调用下面的代码

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

MySQL中没有
TOP
,请改用
LIMIT
$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);
}