php - 多个文件上传不会将所有文件插入数据库

标签 php mysql database image upload

我在插入数据库时​​遇到问题。它仅插入第一个上传的图像:/这是我的 PHP 代码:

    function reArrayFiles(&$file_post) {

    $file_ary = array();
    $file_count = count($file_post['name']);
    $file_keys = array_keys($file_post);

    for ($i=0; $i<$file_count; $i++) {
        foreach ($file_keys as $key) {
            $file_ary[$i][$key] = $file_post[$key][$i];
        }
    }

    return $file_ary;
    }

    $file_ary = reArrayFiles($_FILES['files']);
    $allowedTypes = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF);        

    foreach($file_ary as $key => $file){
        static $i = 1;

        if($file['error'] == 4){
            continue;
        }elseif(!in_array(exif_imagetype($file['tmp_name']), $allowedTypes)){
            $error = '<span style="color:red">Filename '.$file['name'].' <b>type</b> is not allowed.</span><br>';
        }elseif($file['size'] > 2097152){
            $error = '<span style="color:red">Filename '.$file['name'].' exceeds maximum allowed <b>size</b></span>.<br>';
        }else{              
            $getfilename= $file["name"];
            $FileName="U[$user->id].$getfilename";
            $time = time();
            $output_dir = "uploads/";               

            if(!file_exists("uploads/".$FileName)){                 
                move_uploaded_file($file["tmp_name"], "uploads/".$FileName);
            }else{
                $FileName="$time.$getfilename";
                move_uploaded_file($file["tmp_name"], "uploads/".$FileName);
            }

            mysql_query("INSERT INTO ads_pictures (path, filename, timestamp) VALUES('".$output_dir."', '".$FileName."', '".$time."')");            
        }
        $i++;
    }

这是 HTML 代码:

                        <form method="post" enctype="multipart/form-data" action="">
                            <input id="image" type="file" name="files[]" accept="image/*">
                            <input id="image" type="file" name="files[]" accept="image/*">
                            <input id="image" type="file" name="files[]" accept="image/*">
                            <input id="image" type="file" name="files[]" accept="image/*">
                            <input name="submit" class="btn submit" value="Upload" type="submit">
                        </form>

它通常应该将所有上传的文件插入数据库,但不幸的是它只插入第一个选定的文件。感谢您的帮助。

最佳答案

您是否考虑过替换此:

  foreach($file_ary as $key => $file){
    static $i = 1;

这样:

$i = 1;
foreach($file_ary as $key => $file){

请告诉我们这是否有帮助。

关于php - 多个文件上传不会将所有文件插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47242325/

相关文章:

MySQL 5.7.9、Rails 3.2、mysql2 0.3.20

php - MySQL 中的负索引长度

mysql - 如何计算出 MySQL 查询的正确逻辑

MYSQL数据库服务器优化: Queries very slow with many connections

php - Laravel Eloquent 中的复杂连接子句

javascript - 调试 AJAX 请求

database - 在设计应用程序数据库时要牢记的一般准则和最佳做法是什么?

python - 如何在测试运行之外使用 pytest fixture ?

php - 在具有透明背景的绘制文本上添加图案叠加

php - 在 centos 中启用 libmongossl