Php 使用codeigniter插入多个图像
我试图上传多个图像,在这里我一次向多个表插入数据。当用户填写表单时,一些数据将首先插入Php 使用codeigniter插入多个图像,php,mysql,image,codeigniter,Php,Mysql,Image,Codeigniter,我试图上传多个图像,在这里我一次向多个表插入数据。当用户填写表单时,一些数据将首先插入表A,并将插入id插入表B。下面是我的代码 控制器 $filesCount = count($_FILES['picture']['name']); //my input file name = 'picture' for ($i = 0; $i < $filesCount; $i++) { $_FILES['userFile']['name'] = $_FILES['picture
表A
,并将插入id
插入表B
。下面是我的代码
控制器
$filesCount = count($_FILES['picture']['name']); //my input file name = 'picture'
for ($i = 0; $i < $filesCount; $i++) {
$_FILES['userFile']['name'] = $_FILES['picture']['name'][$i];
$_FILES['userFile']['type'] = $_FILES['picture']['type'][$i];
$_FILES['userFile']['tmp_name'] = $_FILES['picture']['tmp_name'][$i];
$_FILES['userFile']['error'] = $_FILES['picture']['error'][$i];
$_FILES['userFile']['size'] = $_FILES['picture']['size'][$i];
$config['upload_path'] = '/uploads/user/test/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = 0;
$new_name = uniqueId();
$config['file_name'] = $new_name;
$this->load->library('upload', $config);
if($this->upload->do_upload('userFile')){
$fileData = $this->upload->data();
$uploadData[$i]['file_name'] = $fileData['file_name'];
}
}
if(!empty($uploadData)) {
$this->Insert_model->setImage($uploadData);
$isCreate = $this->Insert_model->createImage($uploadData);
}
输出插入到表UserImage中的数据
Array
(
[0] => Array
(
[file_name] => 5943442cd1380.jpg
)
[1] => Array
(
[file_name] => 5943442cd1380.png
)
[2] => Array
(
[user_id] => 2
[title_id] => 1
[image_name] => Array
(
[0] => Array
(
[file_name] => 5943442cd1380.jpg
)
[1] => Array
(
[file_name] => 5943442cd1380.png
)
)
)
)
Array
(
[0] => Array
(
[user_id] => 2
[title_id] => 1
[file_name] => 5943442cd1380.jpg
)
[1] => Array
(
[user_id] => 2
[title_id] => 1
[file_name] => 5943442cd1380.png
)
)
输出时,数据无法插入到第二个表中
预期产出将为
Array
(
[0] => Array
(
[file_name] => 5943442cd1380.jpg
)
[1] => Array
(
[file_name] => 5943442cd1380.png
)
[2] => Array
(
[user_id] => 2
[title_id] => 1
[image_name] => Array
(
[0] => Array
(
[file_name] => 5943442cd1380.jpg
)
[1] => Array
(
[file_name] => 5943442cd1380.png
)
)
)
)
Array
(
[0] => Array
(
[user_id] => 2
[title_id] => 1
[file_name] => 5943442cd1380.jpg
)
[1] => Array
(
[user_id] => 2
[title_id] => 1
[file_name] => 5943442cd1380.png
)
)
您必须将此部分更改为
$data[] = array(
'user_id' => $this->getUserId(),
'title_id' => $insert_id, //Insert Inserted id
'image_name' => $this->getImage(),
);
foreach($data as $row) { // here data is from parameter
$data1[] = array(
'user_id' => $this->getUserId(),
'title_id' => $insert_id, //Insert Inserted id
'image_name' => $row['file_name'] // this line is changed
);
}
$this->db->insert_batch('UserImage', $data1);// variable name is changed.
这是因为,在模型中,您的参数是
$data
。您正在控制器中仅向其插入文件名并传递给模型。我如何从控制器获取插入的id?您是否在多个图像中尝试过此操作?如果任何图像不正确或不符合标准,会发生什么?感谢您提供的解决方案。我设法获得了正确的输出,但在第行'image\u name'=>$row['file\u name']
上出现了错误未定义索引:file\u name
。哦,我只是在编码时犯了一些错误。你的解决方案非常有效。非常感谢。我有一个问题,如果用户上传了多个图像,其中一个图像不符合标准,甚至没有一个图像,在这种情况下,我该怎么办?@ankitsuthar,您可以使用javascript验证您的输入。