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

CodeIgniter遇MySQL 1048错误求助:'ket'列不能为空

解决MySQL 1048错误(Column 'ket' cannot be null)

错误信息

错误编号:1048
Column 'ket' cannot be null
执行的SQL语句:INSERT INTO tb_uploadv (ket, tgl, video) VALUES (NULL, NULL, NULL)
错误文件路径:C:/xamppV5/htdocs/sicams/system/database/DB_driver.php
错误行号:691

问题根源

表单输入字段的name属性与控制器中接收的字段名完全不匹配,导致所有字段值无法正确获取,最终插入数据库时全部为NULL,而数据库中ket字段设置为非空约束,触发1048错误。

修复步骤

1. 修正视图文件(views/uploadv.php)的表单字段name属性

将表单里的字段name改为与控制器接收参数一致的名称:

<form method="post" action="<?php echo base_url().'uploadv/tambah_aksi';?>">
    <div class="form-group">
        <label>Keterangan</label>
        <input type="text" name="ket" class="form-control">
    </div>

    <div class="form-group">
        <label>Tanggal Rekaman</label>
        <input type="date" name="tgl" class="form-control">
    </div>

    <div class="form-group">
        <label>File Rekaman</label>
        <input type="text" name="video" class="form-control">
    </div>

    <button type="reset" class="btn btn-danger" data-dismiss="modal">Batal</button>
    <button type="submit" class="btn btn-primary">Simpan</button>
</form>

2. 统一控制器与模型的方法参数(规范优化)

控制器中调用模型时传递了两个参数,但模型方法仅接收一个,可二选一修改:

  • 方案一:修改控制器代码
// 原代码
$this->m_uploadv->input_data($data, 'tb_uploadv');
// 修改为
$this->m_uploadv->input_data($data);
  • 方案二:修改模型代码(支持动态表名)
public function input_data($data, $table)
{
    $this->db->insert($table, $data);
}

3. 可选:添加表单验证(提前拦截空值)

在控制器中添加表单验证,避免用户提交空值:

class Uploadv extends CI_Controller{
    public function __construct()
    {
        parent::__construct();
        $this->load->library('form_validation'); // 加载验证库
    }

    // ... 其他方法省略

    public function tambah_aksi()
    {
        // 设置验证规则
        $this->form_validation->set_rules('ket', 'Keterangan', 'required');
        $this->form_validation->set_rules('tgl', 'Tanggal Rekaman', 'required');
        $this->form_validation->set_rules('video', 'File Rekaman', 'required');

        if ($this->form_validation->run() == FALSE) {
            $this->index(); // 验证失败返回表单页面
        } else {
            $data = [
                'ket'   => $this->input->post('ket'),
                'tgl'   => $this->input->post('tgl'),
                'video' => $this->input->post('video'),
            ];

            $this->m_uploadv->input_data($data);
            redirect('uploadv/index');
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:24:37