javascript - 如何使用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
oroffset 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 我正在使用帮助程序。这样我就可以在我的控制器上调用它。
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;
}
我有一个错误,undefined offset:1
如果我只是为索引 [0]undefined offset:0
上传,如果我只是为索引 [1] 上传,如果两个索引都有一个值,则没有错误,我仍然不知道如何在我的查询中执行它两个索引都有一个值。提前致谢。对不起,如果我的解释不是那么准确。
解决方案
它得到未定义的索引,因为在您的上传功能上,如果您只上传单个文件,那么它只会产生单个上传数据,因此$files[0]
or$files[1]
数组将未定义,并且松散相等或松散不相等条件将失败。
为了让你的逻辑工作,你可以使用empty
检查:
if (!empty($files[0]) && empty($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 (!empty($files[1]) && empty($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
}
if
即使其中一个$files
具有未定义的索引,这也会执行该块。但是您应该注意,如果两者都不为空并且两者都为空,则该else
语句将被执行$files
$files
推荐阅读
- python - 如何在python3中使用或实现__div__(python2)而不是__truediv__
- matlab - 在对数缩放的 uiaxes 中显示数据提示
- reactjs - 如何居中 headerRight 图标按钮
- javascript - 使用 React 和 Flask 静态模板渲染 CSS
- python - 计数不正确
- php - 当我在 ckeditor 中使用 a 并尝试使用 php 获取数据时,它会给我一些奇怪的字符
- python - Flask-pymongo RuntimeError:在应用程序上下文之外工作
- reactjs - 一次保存所有状态值
- vue.js - 如何使用 bot 构造函数提供的 http url 在 js 文件中的对象中包含 Nuxt 应用程序中的外部 html?
- ffmpeg - ffmpeg 使用 drawtext 和 subtitle 垂直居中对齐多行文本,这两个过滤器都与字体大小无关