星空2020 2023-05-28 08:21 采纳率: 64.1%
浏览 58
已结题

php+mysql如何实现顺序扣减库存

相同的物品有两条或者两条以上的库存量,在扣除库存时如何先扣除库存量最低或最早入库的呢?
当wupin_name为QD001的需求量post传来的$demand是8时,如何先扣除id库存最低的1个,再依次扣除后面的5,最后id为3的库存变为8。
mysql表结构
id inputdate wupin_name wupinID kucun
1 2023-4-12 QD001 FF202101 1
2 2023-5-1 QD001 FF202305 5
3 2023-5-20 QD001 FF202302 10

链接数据库:

<?php
try {
  $pdo = new PDO('mysql:host=127.0.0.1;dbname=mydb;port=3306', 'root', 'root');
} catch (PDOException $e) {
  die('connet error :' . $e->getMessage());
};
$pdo->exec('set names utf8');

顺序扣减库存,先扣除库存最少的,或者最早时间入库的物品。目前无法扣除:

$demand = $_POST['demand'];  
$wupin_name = $_POST['wupin_name'];
 
  $result = $pdo->query("SELECT * FROM kucun WHERE wupin_name='$wupin_name ' and kucun>0 ORDER BY id ASC");
  $reduced = 0;     //已减少的总量
 while ($row = $result->fetchAll(PDO::FETCH_ASSOC))  {
    if($reduced < $demand) {
        if( $row['kucun'] <= ($demand - $reduced)) {
            $reduced += $row['kucun']; 
            $send1 = $pdo->exec( "UPDATE kucun SET kucun=0 WHERE id={$row['id']}");
        } else {
            $send1 = $pdo->exec( "UPDATE kucun SET kucun={$row['kucun']-($demand-$reduced)} WHERE id={$row['id']}");//报错:Parse error: syntax error, unexpected '-', expecting :: (T_PAAMAYIM_NEKUDOTAYIM) in.....            
            $reduced = $demand;
            break;
        }
    }
}
  • 写回答

1条回答 默认 最新

  • 创意程序员 2023-05-28 09:37
    关注

    按你希望的扣减顺序查询库存数据,然后在PHP里面顺序访问查询结果集,依次扣减库存,直到扣完需求量。正式扣减库存前可以先检查库存是否足够扣减,不够就给出提示信息,避免无效扣减

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月5日
  • 已采纳回答 5月28日
  • 修改了问题 5月28日
  • 修改了问题 5月28日
  • 展开全部

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 易优eyoucms关于二级栏目调用的问题
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题