如何使用codeigniter在MYSQL数据库中使用数组索引上传文件

对不起,如果这是一个菜鸟问题,我仍然是 codeigniter 的新手,


这是我的问题,


我有一个回复,看起来像这样


Array([0] => Array([original_name] => avatar_img12.png [filename] => avatar_img12.png) [1] => Array([original_name]=> add_icon27.png [filename] => add_icon27.png))


我有 2 个输入类型的文本框文件,这就是为什么它只有 0 和 1 的索引,在需要两个输入类型文件的帮助下,我能够将它上传到我的数据库中,但我的问题是用户何时更新他们的数据,


他们可能会更新相同的文件,或者只是其中的一个。我怎样才能只更新特定的索引。


我已经尝试为每个索引创建一个 if 语句,但我有一个错误offset 1或offset 0


这是我的模型


          if($files[0] != '' && $files[1]==''){

            $this->db->select('id,picture_id');

            $this->db->from($this->project_tbl);

            $this->db->where('id',$id);

             $query = $this->db->get();

                if($query->num_rows() > 0){

                    $this->db->where('id', $query->row()->picture_id);

                    $this->db->update($this->project_core_documents, $files[0]);

                }

            }else if($files[1] != '' && $files[0]==''){

                $this->db->select('id,detailed_report_id');

                $this->db->from($this->project_tbl);

                $this->db->where('id',$id);

                $query = $this->db->get();

                    if($query->num_rows() > 0){

                        $this->db->where('id', $query->row()->detailed_report_id);

                        $this->db->update($this->project_core_documents, $files[1]);

                    }

            }else{

                //both files

            }



这是我的表格


<form class="kt-form" id = "save_project" enctype="multipart/form-data">

<input type="file" class="form-control project_userfiles" name = "userfile[]" multiple="">


<input type="file" class="form-control project_userfiles" name = "userfile[]" multiple="">

</form>

这就是我如何获取用于上传的数组 $files 我正在使用帮助程序。这样我就可以在我的控制器上调用它。

我有一个错误,undefined offset:1如果我只是为索引 [0]undefined offset:0上传,如果我只是为索引 [1] 上传,如果两个索引都有一个值,则没有错误,我仍然不知道如何在我的查询中执行它,如果这两个索引都有一个值。提前致谢。对不起,如果我的解释不那么准确。


慕森王
浏览 132回答 1
1回答

慕虎7371278

它得到未定义的索引,因为在您的上传功能上,如果您只上传单个文件,那么它只会生成单个上传数据,因此 the $files[0]or$files[1]数组将是未定义的,并且松散相等或松散非相等条件将失败。为了让你的逻辑工作,你可以使用empty检查:if (!empty($files[0]) && empty($files[1])) {&nbsp; &nbsp; $this->db->select('id,picture_id');&nbsp; &nbsp; $this->db->from($this->project_tbl);&nbsp; &nbsp; $this->db->where('id', $id);&nbsp; &nbsp; $query = $this->db->get();&nbsp; &nbsp; if ($query->num_rows() > 0) {&nbsp; &nbsp; &nbsp; &nbsp; $this->db->where('id', $query->row()->picture_id);&nbsp; &nbsp; &nbsp; &nbsp; $this->db->update($this->project_core_documents, $files[0]);&nbsp; &nbsp; }} else if (!empty($files[1]) && empty($files[0])) {&nbsp; &nbsp; $this->db->select('id,detailed_report_id');&nbsp; &nbsp; $this->db->from($this->project_tbl);&nbsp; &nbsp; $this->db->where('id', $id);&nbsp; &nbsp; $query = $this->db->get();&nbsp; &nbsp; if ($query->num_rows() > 0) {&nbsp; &nbsp; &nbsp; &nbsp; $this->db->where('id', $query->row()->detailed_report_id);&nbsp; &nbsp; &nbsp; &nbsp; $this->db->update($this->project_core_documents, $files[1]);&nbsp; &nbsp; }} else {&nbsp; &nbsp; //both files}if即使其中一个$files具有未定义的索引,这也会执行该块。但是你应该注意,else如果两者$files都不为空,并且两者都$files为空,则该语句将被执行
打开App,查看更多内容
随时随地看视频慕课网APP