Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用codeigniter插入多个图像_Php_Mysql_Image_Codeigniter - Fatal编程技术网

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验证您的输入。