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

如何使用Jquery和PHP实现点击保存按钮批量更新MySQL表多条数据?

解决方案

1. 修复前端JS逻辑错误

你当前获取发票编号的代码有误:<td>是普通文本元素,不能用.val()取值,需要改成.text(),修改后的提交逻辑如下:

var invoice_no_receipt  = []; 
var invoice_amt_receipt  = [];
        
$('.invoice_no_receipt').each(function() {
    // 替换val()为text()获取td内的发票编号文本
    invoice_no_receipt.push($.trim($(this).text()));
});

$('.invoice_amt_receipt').each(function() {
    invoice_amt_receipt.push($.trim($(this).val()));
});
    
$.ajax({
    url: base_url + "index.php/welcome/savereciptfinal/",
    type: "POST",
    data: {
        "getinvnumber": invoice_no_receipt,
        "getinv_recived_amount": invoice_amt_receipt
    },
    success: function(data) {
        // 后续成功逻辑自行补充
    }
});

2. 改写后端PHP批量更新逻辑

原来的代码只处理了单条数据,需要循环遍历前端传过来的数组批量更新,同时修复字段不匹配、变量未定义等问题,修改后代码如下:

public function savereciptfinal()
{
    // 开启事务保证数据一致性
    $this->db->trans_start();
    
    $value2 = "0001"; // 这里替换为你实际的自动生成receiptID的逻辑
    $data = array(
        'rece_No' => $value2
    );
    $this->db->insert("receipt_details", $data);
    $insert_id = $this->db->insert_id();
    
    // 获取前端传的两个数组
    $inv_numbers = $this->input->post('getinvnumber');
    $received_amts = $this->input->post('getinv_recived_amount');
    
    // 遍历批量更新,两个数组下标一一对应
    if (!empty($inv_numbers) && count($inv_numbers) == count($received_amts)) {
        foreach ($inv_numbers as $key => $inv_id) {
            $update_data = array(
                // 字段名要和你的invoice_details表对应
                'received_amount' => $received_amts[$key],
                'receiptID' => $value2
            );
            $this->db->where('invoice_number', $inv_id);
            $this->db->update('invoice_details', $update_data);
        }
    }
    
    // 提交事务
    $this->db->trans_complete();
    
    // 返回操作结果,可自行扩展
    if ($this->db->trans_status() === FALSE) {
        echo json_encode(['code'=>0,'msg'=>'保存失败']);
    } else {
        echo json_encode(['code'=>1,'msg'=>'保存成功']);
    }
}

注意事项

  • 上述代码中数据库字段名已匹配你提供的invoice_details表结构,如果实际字段名有差异请自行调整
  • 建议增加参数校验逻辑,比如判断实收金额是否为合法数值、发票编号是否存在,避免无效数据写入
  • 你示例中的receiptID生成逻辑是固定值0001,请替换为你实际的自动生成唯一编号的逻辑

内容的提问来源于stack exchange,提问作者Remesh sree

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:30:05