首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >库存超出限制,仍插入到订单表中

库存超出限制,仍插入到订单表中
EN

Stack Overflow用户
提问于 2013-09-29 11:30:09
回答 1查看 89关注 0票数 1
代码语言:javascript
运行
复制
$prodqty = mysql_query("SELECT quan FROM pro_list WHERE auto_id = $pid"); //get the current product quantity
if (mysql_num_rows($prodqty) != 0)
{
    $row = mysql_fetch_array($prodqty);
    $productqty = $row['quan'];
}
$nqty = $productqty-$q; //current product quantity minus order quantity to get new product quantity

if ($nqty >= 0)
{  
    $query2="UPDATE pro_list SET quan = $nqty WHERE auto_id = $pid"; //update the quantity in the product table
    $result = mysql_query($query2);

    if ($result)
      echo "Successfully ";
    else
      echo "Unsuccesfully";
}
else
    echo "Limit of quantity! .";
}
die('Thank You For Shopping With i-Supply System! your order has been sent to Admin.!');
}

库存超出限制,但订单仍插入到数据库中。订单不应该插入到表order中,因为它已经超出了产品数量的限制。客户应该再次下单。为什么会发生这种情况?

EN

回答 1

Stack Overflow用户

发布于 2013-09-29 11:48:17

你的方法从根本上是有缺陷的。如果同时尝试两个或更多更新,您将获得竞争条件。您应该将检查和更新作为单个查询来执行,如下所示:

代码语言:javascript
运行
复制
$query="UPDATE pro_list SET quan=quan-$q WHERE auto_id=$pid and quan>=$q";

$result = mysql_query($query) or die(mysql_error());

if (mysql_affected_rows()  == 0) {
  echo "Out of stock!";
} 

在任何情况下,您都不应该使用mysql -它已被弃用。请改用mysqliPDO

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19074116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档