You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP批量存数据到MySQL时按max(billno)递增分配新账单号问题

账单号分配逻辑实现方案

实现思路

  • 以当前数据库最大账单号为基准值,每碰到一个新的原账单号就将基准值+1作为新账单号分配
  • 建立原账单号和新账单号的映射关系,相同原账单号的条目复用同一个新账单号,保证同组条目账单号统一

具体PHP实现代码

// 获取数据库当前最大账单号
$currentMaxBillNo = $this->model_mobileapi->getInvNoIntrans();
// 初始化原账单号→新账单号映射数组
$billNoMapping = [];

// 遍历所有待存入数据
foreach ($data as $item) {
    $originBillNo = $item->inv_no;
    // 该原账单号还未分配过新号,生成新的账单号存入映射
    if (!isset($billNoMapping[$originBillNo])) {
        $currentMaxBillNo++;
        $billNoMapping[$originBillNo] = $currentMaxBillNo;
    }
    // 给当前条目赋值新账单号
    $item->inv_no = $billNoMapping[$originBillNo];
}

// 遍历完成后直接将$data批量写入数据库即可

效果验证

以你给出的示例数据为例,逻辑运行结果如下:

初始$currentMaxBillNo为15,映射数组为空
第一次碰到原账单号为3的条目A,$currentMaxBillNo自增为16,映射数组存入3=>16,所有条目A的新账单号统一为16
第一次碰到原账单号为5的条目B,$currentMaxBillNo自增为17,映射数组存入5=>17,所有条目B的新账单号统一为17
后续如果有其他原账单号的条目C、D,会依次分配18、19等顺延的新账单号,完全符合需求

内容的提问来源于stack exchange,提问作者GOBLiN TheDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:48:02