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

Javascript 如何使用codeigniter在MYSQL数据库中使用数组索引上传文件,javascript,php,ajax,codeigniter,Javascript,Php,Ajax,Codeigniter,抱歉,如果这是一个noob问题,我还是codeigniter的新手 这是我的问题 我有一个反应,看起来像这样 Array([0]=>Array([original\u name]=>avatar\u img12.png[filename]=>avatar\u img12.png)[1]=>Array([original\u name]=>add\u icon27.png[filename]=>add\u icon27.png)) 我有两个输入类型的文本框文件,这就是为什么它只有一个索引0和1,我

抱歉,如果这是一个noob问题,我还是codeigniter的新手

这是我的问题

我有一个反应,看起来像这样

Array([0]=>Array([original\u name]=>avatar\u img12.png[filename]=>avatar\u img12.png)[1]=>Array([original\u name]=>add\u icon27.png[filename]=>add\u icon27.png))

我有两个输入类型的文本框文件,这就是为什么它只有一个索引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>

这就是我如何得到数组$文件来上传我正在使用一个助手。这样我就可以在我的控制器上调用它

function uploadMultiple() {
    $uploadData = [];
    $ci = &get_instance(); // need this to resolve the app
    if(!empty($_FILES['userfile']['name'])) {
        $filesCount = count($_FILES['userfile']['name']);
        for($i = 0; $i < $filesCount; $i++) {
            $_FILES['userFile']['name'] = $_FILES['userfile']['name'][$i];
            $_FILES['userFile']['type'] = $_FILES['userfile']['type'][$i];
            $_FILES['userFile']['tmp_name'] = $_FILES['userfile']['tmp_name'][$i];
            $_FILES['userFile']['error'] = $_FILES['userfile']['error'][$i];
            $_FILES['userFile']['size'] = $_FILES['userfile']['size'][$i];
            $config['upload_path'] = './upload';
            $config['allowed_types'] = 'pdf|doc|txt|jpg|png';
            $ci->load->library('upload', $config);
            $ci->upload->initialize($config);
            if($ci->upload->do_upload('userFile')){
                     $fileData = $ci->upload->data();
                     $uploadData[$i]['original_name'] = $fileData['file_name'];
                     $uploadData[$i]['filename'] = $fileData['file_name'];
            } else {
                // do something with the errors...
                         $error = $ci->upload->display_errors();
            }
        }
    }
    return  $uploadData;
}

函数uploadMultiple(){
$uploadData=[];
$ci=&get_instance();//需要它来解析应用程序
如果(!空($\u文件['userfile']['name'])){
$filescont=count($_FILES['userfile']['name']);
对于($i=0;$i<$filescont;$i++){
$\u文件['userFile']['name']=$\u文件['userFile']['name'][$i];
$\u文件['userFile']['type']=$\u文件['userFile']['type'][$i];
$\u FILES['userFile']['tmp\u name']=$\u FILES['userFile']['tmp\u name'][$i];
$\u文件['userFile']['error']=$\u文件['userFile']['error'][$i];
$\u文件['userFile']['size']=$\u文件['userFile']['size'][$i];
$config['upload_path']='./upload';
$config['allowed_types']='pdf | doc | txt | jpg | png';
$ci->load->library('upload',$config);
$ci->upload->initialize($config);
如果($ci->upload->do_upload('userFile')){
$fileData=$ci->upload->data();
$uploadData[$i]['original_name']=$fileData['file_name'];
$uploadData[$i]['filename']=$fileData['file_name'];
}否则{
//对错误做点什么。。。
$error=$ci->upload->display_errors();
}
}
}
返回$uploadData;
}
如果我只是为索引[0]上传,我的错误是
未定义的偏移量:1
;如果我只是为索引[1]上传,我的错误是
未定义的偏移量:0

如果两个索引都有一个值,那么就没有错误,如果两个索引都有值,我仍然不知道如何在查询中执行它。提前谢谢。抱歉,如果我的解释不那么准确。

这是一个未定义的索引,因为在您的上载功能中,如果您只上载一个文件,那么它只生成一个上载数据,因此
$files[0]
$files[1]
数组将未定义,松散相等或松散非相等条件将失败。
要使逻辑正常工作,可以使用
empty
检查:

if(!empty($files[0])&&empty($files[1])){
$this->db->select('id,picture_id');
$this->db->from($this->project\u tbl);
$this->db->where('id',$id);
$query=$this->db->get();
如果($query->num\u rows()>0){
$this->db->where('id',$query->row()->picture\u id);
$this->db->update($this->project\u core\u documents,$files[0]);
}
}如果(!empty($files[1])&&empty($files[0]),则为else{
$this->db->select('id,detailed_report_id');
$this->db->from($this->project\u tbl);
$this->db->where('id',$id);
$query=$this->db->get();
如果($query->num\u rows()>0){
$this->db->where('id',$query->row()->详细的报告\u id);
$this->db->update($this->project\u core\u documents,$files[1]);
}
}否则{
//两个文件
}

这将执行
if
块,即使
$文件之一的索引未定义。但是您应该注意,如果两个
$files
都不是空的,并且如果两个
$files
都是空的,则执行
else
语句,因为在上载函数中,如果您只上载一个文件,那么它只会生成一个上载数据,因此
$files[0]
$files[1]
数组将未定义,松散相等或松散非相等条件将失败。
要使逻辑正常工作,可以使用
empty
检查:

if(!empty($files[0])&&empty($files[1])){
$this->db->select('id,picture_id');
$this->db->from($this->project\u tbl);
$this->db->where('id',$id);
$query=$this->db->get();
如果($query->num\u rows()>0){
$this->db->where('id',$query->row()->picture\u id);
$this->db->update($this->project\u core\u documents,$files[0]);
}
}如果(!empty($files[1])&&empty($files[0]),则为else{
$this->db->select('id,detailed_report_id');
$this->db->from($this->project\u tbl);
$this->db->where('id',$id);
$query=$this->db->get();
如果($query->num\u rows()>0){
$this->db->where('id',$query->row()->详细的报告\u id);
$this->db->update($this->project\u core\u documents,$files[1]);
}
}否则{
//两个文件
}

这将执行
if
块,即使
$文件之一的索引未定义。但是您应该注意,如果两个
$files
都不是空的,并且如果两个
$files
都是空的,那么将执行
else
语句。您可以显示发送此文件的html表单输入吗?还有,
$files
包含什么?嗨,达娜,我编辑了我的问题。谢谢你的时间!而
$files
包含这个数组
数组([0]=>数组([original\u name]=>avatar\u img12.png[filename]=>avatar\u img12.png)[1]=>Ar