Codeigniter数据库错误号1048值显示NULL,即使它们不是NULL

时间:2017-07-29 01:31:28

标签: php mysql database codeigniter

我有情况,其中codeigniter显示数据库错误号1048.似乎值为NULL但是当我尝试检查它时, var_dump($ _ POST)值不是NULL。

控制器:Jurusan.php

public function simpan()
{
    $this->form_validation->set_rules('code','Kode','required|integer');
    $this->form_validation->set_rules('jurusan','Jurusan','required');
    $this->form_validation->set_rules('singkatan','Singkatan','required');
    $this->form_validation->set_rules('ketua','Ketua','required');
    $this->form_validation->set_rules('nik','NIK','required|integer');
    $this->form_validation->set_rules('akreditasi','Akreditasi','required');

    if($this->form_validation->run() == FALSE)
    {
        $isi['content'] = 'jurusan/form_tambahjurusan';
        $isi['judul'] = 'Master';
        $isi['sub_judul'] = 'Tambah Jurusan';
        $this->load->view('tampilan_home',$isi);
    } else {
        $this->model_security->getSecurity();

        $key = $this->input->post('code');
        $data['kd_prodi'] = $this->input->post['code'];
        $data['prodi'] = $this->input->post['jurusan'];
        $data['singkat'] = $this->input->post['singkatan'];
        $data['ketua_prodi'] = $this->input->post['ketua'];
        $data['nik'] = $this->input->post['nik'];
        $data['akreditasi'] = $this->input->post['akreditasi'];

        $this->load->model('model_jurusan');
        $query = $this->model_jurusan->getdata($key);

        if($query->num_rows()>0)
        {
            $this->model_jurusan->getupdate($key,$data);
        } else {
            $this->model_jurusan->getinsert($data);
        }

        redirect('jurusan');
    }   
}

型号:model_jurusan.php

class Model_jurusan extends CI_model {
    public function getdata($key)
    {
        $this->db->where('kd_prodi',$key);
        $hasil = $this->db->get('prodi');
        return $hasil;
    }

    public function getupdate($key,$data)
    {
        $this->db->where('kd_prodi',$key);
        $this->db->update('prodi',$data);
    }

    public function getinsert($data)
    {
        $this->db->insert('prodi',$data);
    }
}

以下是显示的错误:

enter image description here

以下是数据库结构:

enter image description here

4 个答案:

答案 0 :(得分:2)

这些行中的语法错误:

$key = $this->input->post('code');
$data['kd_prodi'] = $this->input->post['code']; // <-- use ('code')
$data['prodi'] = $this->input->post['jurusan']; // <-- use ('jurusan')

将此更改为

$this->input->post['array_key'];

$this->input->post('array_key');

阅读:Input Class in Codeigniter

答案 1 :(得分:1)

问题在于你接受输入参数的方式。

$this->input->post

是一个接受变量名而不是数组的方法。因此,所有输入参数都需要作为函数参数传递给post方法。这些行需要改为。

$data['kd_prodi'] = $this->input->post('code');
$data['prodi'] = $this->input->post('jurusan');
$data['singkat'] = $this->input->post('singkatan');
$data['ketua_prodi'] = $this->input->post('ketua');
$data['nik'] = $this->input->post('nik');
$data['akreditasi'] = $this->input->post('akreditasi');

希望这能解决问题。

编辑:

你做了var_dump($_POST)按预期工作,它将读取post参数的值。因此,要么从$_POST数组中获取参数,要么使用$this->input->post()方法。但我建议使用$this->input->post()方法,因为它提供了额外的清理,例如xss攻击处理等,可以从配置中关闭。

答案 2 :(得分:1)

我已经尝试过你的代码......它有效。我认为您的<input>代码中存在一些错误,您必须使用<input name="">而不是<input id="">或其他内容。希望它可以帮到你

答案 3 :(得分:0)

你试图从帖子中获取价值是错误的。你应该这样使用

    $_POST['array value'];