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

数据库更新功能失效求助:附PHP控制器、Model及AJAX代码

问题分析与代码修正

你的代码存在几个关键问题导致更新功能失效,以下是具体问题和修正方案:

1. 控制器(Main)的错误

  • 参数传递顺序错误:调用update_sample模型方法时,$data变量还未定义,且没有把表单提交的$id3和$sample3传递给模型
  • 未处理数据库执行结果:直接返回成功状态,没有判断更新是否真的成功

修正后的控制器代码:

public function update_sample(){
    $id3 = sanitize($this->input->post('id3'));
    $sample3 = sanitize($this->input->post('sample3'));

    if($this->session->userdata('position_id') != ""){
        // 组装模型需要的参数:样本值和ID,顺序对应SQL占位符
        $update_params = array($sample3, $id3);
        // 执行更新并获取结果
        $update_result = $this->model->update_sample($update_params);
        
        // 根据执行结果返回对应状态
        $data = $update_result ? 
            array("success" => 1, "message" => 'Note: You have successfully updated') :
            array("success" => 0, "message" => 'Update failed, please try again');
    }else{
        $this->logout();
        $data = array("success" => 0, "message" => 'Session expired, please login again');
    }
    generate_json($data);
}

2. 模型(Model)的错误

  • SQL参数不完整:UPDATE语句有两个占位符(sample=?和id=?),但$data数组只传入了一个值,导致SQL执行时参数缺失

修正后的模型代码:

public function update_sample($params){
    $sql = "UPDATE test SET sample=? WHERE id=? AND enabled=1";
    // $params是包含样本值和ID的数组,顺序与SQL占位符对应
    return $this->db->query($sql, $params);
}

// 可选:用CodeIgniter的Active Record写法,更易读且安全
// public function update_sample($sample_value, $id){
//     $this->db->set('sample', $sample_value);
//     $this->db->where('id', $id);
//     $this->db->where('enabled', 1);
//     return $this->db->update('test');
// }

3. JavaScript的缺失

  • 当前JS仅实现了点击按钮获取详情并弹出模态框的功能,没有处理模态框中提交更新的逻辑,导致更新请求从未发送到服务器

补充并修正后的JS代码:

// 点击更新按钮获取详情并填充模态框
$("#table-grid").delegate(".btnUpdate", "click", function(){
    var id = $(this).data('value');
    $.ajax({
        type: 'post',
        url: base_url+'Main/view_details',
        data: {'id3': id},
        dataType: 'json',
        success: function(data){
            var res1 = data.result1;
            if(data.success == 1){
                var sampleInput = document.getElementById("sample3");
                sampleInput.value = res1[0].samples;
                sampleInput.dataset.id = id; // 把ID存储到输入框的data属性中,方便提交时获取
                
                $('#update').modal();
            }           
        },
        error: function(){
            alert('Failed to load details');
        }
    });
});

// 模态框提交按钮的点击事件(假设按钮ID为submitUpdate)
$("#submitUpdate").click(function(){
    var id = document.getElementById("sample3").dataset.id;
    var sampleValue = $("#sample3").val();
    
    $.ajax({
        type: 'post',
        url: base_url+'Main/update_sample',
        data: {'id3': id, 'sample3': sampleValue},
        dataType: 'json',
        success: function(data){
            if(data.success == 1){
                alert(data.message);
                $('#update').modal('hide');
                // 可选:刷新表格数据,展示最新内容
                $("#table-grid").load(base_url+'Main/load_table_content');
            }else{
                alert(data.message);
            }
        },
        error: function(){
            alert('Update request failed');
        }
    });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:10:22