【问题标题】:A Database Error Occurred Error Number: 1048 Column 'gambar' cannot be null , upload file in codeigniterA Database Error Occurred Error Number: 1048 Column 'gambar' cannot be null , 在codeigniter中上传文件
【发布时间】:2020-11-03 11:50:44
【问题描述】:

上传文件的方法工作正常,但我无法保存数据,也许有一些变量“gambar”,我只是不明白这个上传文件是如何工作的。所以请帮我解决它

控制器:

public function add(){
    if($this->input->post('submit')){
        if($this->Console_model->validation("save")){
        $this->Console_model->create();
        if($this->db->affected_rows() > 0){
            $this->session->set_flashdata('msg','<p  style="color:black">Console Succesfully Added!</p>');
        }else{
            $this->session->set_flashdata('msg','<p  style="color:red">Console Input Failed!</p>');
        }
        redirect('console');
        }
    }
    $data['specs']=$this->Spec_model->read();
    $data['view'] = "console/v_form";
    $this->load->view('index', $data);
}

型号:

public function create(){
    $data=array(
        'nama_con' => $this->input->post('nama_con'),
        'garansi' => $this->input->post('garansi'),
        'deskripsi' => $this->input->post('deskripsi'),
        'harga' => $this->input->post('harga'),
        'gambar' => $this->input->post('gambar')
    );
    $this->gambar=$this->do_upload();
    $this->db->insert('tb_console',$data);
}

private function do_upload(){
    $config['upload_path']      = './uploads/barang/';
    $config['allowed_types']    = 'gif|jpg|png';
    $config['max_size']         = 4072;
    $config['max_width']        = 1024;
    $config['max_height']       = 768;

    $this->load->library('upload', $config);
    if($this->upload->do_upload('gambar')){
        return $this->upload->data('file_name');
    }
    return "default.jpg";
}

在对上传方法进行编码之前,我曾尝试使用 create 方法,它的工作正常

查看:

<?php
$nama="";$gar="";$desk="";$har="";$gam="";
    if(isset($con)){
        $nama=$con->nama_con;
        $gar=$con->garansi;
        $desk=$con->deskripsi;
        $har=$con->harga;
        $gam=$con->gambar;
    }
?>
<div class="container">
    <div class="row">
        <form class="col-md-4 mx-auto" action="" method="post" enctype="multipart/form-data">
            <h2 class="mt-5 mb-5">Form Console</h2>
            <div style="color: red;"><?php echo validation_errors(); ?></div>
            <div class="form-group">
                <label for="Nama">Nama Console</label>
                <select name="nama_con" class="form-control" id="">
                    <option value="">Choose Console</option>
                    <?php foreach($specs as $spec){ ?>
                    <option value="<?=$spec->name_con?>" <?=set_select('name_con', $spec->name_con, $nama==$spec->name_con?TRUE:FALSE)?>><?=$spec->name_con?></option>
                    <?php } ?>
                </select>
            </div>
            <div class="form-group">
                <label for="garansi">Garansi</label>
                <input type="number" class="form-control" name="garansi" value="<?=$gar?>">
            </div>
            <div class="form-group">
                <label for="Deskripsi">Deskripsi</label>
                <textarea name="deskripsi" class="form-control" id=""><?=$desk?></textarea>
            </div>
            <div class="form-group">
                <label for="harga">Harga</label>
                <input type="number" class="form-control" name="harga" value="<?=$har?>">
            </div>
            <div class="form-group">
                <label for="fullname">Gambar</label>
                <input type="file" name="gambar" class="form-control" required>
            </div>
            <div class="form-group"><input type="submit" name="submit" value="Save" class="btn btn-success">
            <a href="<?=site_url('console')?>"><input type="button" value="Batal" class="btn btn-danger"></a>
            </div>
        </form>
    </div>
</div>

【问题讨论】:

    标签: php codeigniter file-upload


    【解决方案1】:

    它的原因是您的 gambar 值为 null 并且您的 gambar 字段不允许为 null 值,您可以编辑您的字段并选中 null 复选框。

    你可以试试:


    public function create()
    {
      $this->gambar=$this->do_upload();
      $data=array(
              'nama_con' => $this->input->post('nama_con'),
              'garansi' => $this->input->post('garansi'),
              'deskripsi' => $this->input->post('deskripsi'),
              'harga' => $this->input->post('harga'),
              'gambar' => $this->gambar
            );
       $this->db->insert('tb_console',$data);
    }
    

    您的图片名称不是来自帖子,我认为它来自 do_upload 返回

    【讨论】:

    • 是的,它已经修复了,我忘了提,但我必须使用 gambar 值来显示文件,在这种情况下,也许我必须将 gambar 声明为其他东西,或者我以不正确的方式放置 gambar 但我还不够理解,也感谢您的帮助
    • 它的工作,但我这里有一个小问题,现在在数据库中上传为 ''1'' 的 gambar 数据,你能帮我把它从 ''1'' 更改为文件名
    • 我认为你的 $this->gambar 是一个数组,尝试使用 print_r($this->gambar) 进行调试,我经常使用:$filename = $this->upload->data("文件名”); $filename = $filename['file_name']; //这是你的图片名称结果
    猜你喜欢
    • 2017-06-21
    • 1970-01-01
    • 2022-10-18
    • 2022-11-04
    • 2015-11-03
    • 2022-10-05
    • 2021-02-13
    • 1970-01-01
    • 2022-12-28
    相关资源
    最近更新 更多