【问题标题】:Import Multiple Csv file into mysql table将多个 Csv 文件导入 mysql 表
【发布时间】:2020-10-27 08:23:36
【问题描述】:

我想将多个 Csv 文件上传到我的数据库中,但是当我尝试添加更多该 1 个文件时,它只上传第一个文件并跳过另一个我应该怎么做? 我知道我应该使用foreach,但我不知道在哪里添加它

这是上传数据的部分

 if(isset($_POST["submit"]))
            {   
            
        if($_FILES['file']['name'])
            {
        
                $filename = explode(".", $_FILES['file']['name']);
         if($filename[1] == 'csv')
            {
          
             
                $handle = fopen($_FILES['file']['tmp_name'], "r");
             
             $counter=0;
             while ( ! feof ( $handle ) )
                {     
    if ( $counter === 2)
        break;
 
    $buffer = fgetcsv ( $handle, 5000 ); 
    ++$counter;
                }
             
             while($data = fgetcsv($handle))
                {
        
                    if ($data[42] == "SignInName") {
                 $item0 = mysqli_real_escape_string($connect, $data[42]); 
                                         }
                    $item0 = mysqli_real_escape_string($connect, $data[42]); 
                    $item1 = mysqli_real_escape_string($connect, $data[32]);
                    $item2 = mysqli_real_escape_string($connect, $data[13]);
                    $item3 = mysqli_real_escape_string($connect, $data[19]);
                    $item4 = mysqli_real_escape_string($connect, $data[44]);
                    $item5 = mysqli_real_escape_string($connect, $data[5]);
                     $query = "INSERT into csv(email, password, firstname,lastname,field,country) values('$item0','$item1','$item2','$item3','$item4','$item5')";
                                mysqli_query($connect, $query);
               
             }
                fclose($handle);
                            echo "<script>alert('uploaded');</script>";
             
         }
            else
             
         {
             echo"<script>alert('ERROR ')</script>";    
         }
    }
        }

提前感谢您的阅读。

【问题讨论】:

    标签: php sql csv multiple-input


    【解决方案1】:

    HTML:

    <input type="file" name="file[]" id="file" multiple>
    

    php:

    if (isset($_POST["submit"])) {
        // Count total files
        $countfiles = count($_FILES['file']['name']);
    
        // Looping all files
        for ($i = 0; $i < $countfiles; $i++) {
            if ($_FILES['file']['name'][$i]) {
                $filenametmp = $_FILES['file']['name'][$i];
                $filename = explode(".", $filenametmp);
    
                if ($filename[1] == 'csv') {
                    $handle = fopen($_FILES['file']['tmp_name'][$i], "r")
                    $counter = 0;
                    while (!feof($handle)) {
                        if ($counter === 2)
                            break;
                        $buffer = fgetcsv($handle, 5000);
                        ++$counter;
                    }
                    while ($data = fgetcsv($handle)) {
                        if ($data[42] == "SignInName") {
                            $item0 = mysqli_real_escape_string($connect, $data[42]);
                        }
                        $item0 = mysqli_real_escape_string($connect, $data[42]);
                        $item1 = mysqli_real_escape_string($connect, $data[32]);
                        $item2 = mysqli_real_escape_string($connect, $data[13]);
                        $item3 = mysqli_real_escape_string($connect, $data[19]);
                        $item4 = mysqli_real_escape_string($connect, $data[44]);
                        $item5 = mysqli_real_escape_string($connect, $data[5]);
                        $query = "INSERT into csv(email, password, firstname,lastname,field,country) values('$item0','$item1','$item2','$item3','$item4','$item5')";
                        mysqli_query($connect, $query);
                    }
                    fclose($handle);
                    echo "<script>alert('uploaded');</script>";
                } else {
                    echo "<script>alert('ERROR ')</script>";
                }
            }
        }
    }
    

    【讨论】:

    • 不工作!这里是错误:{count(): Parameter must be an array or an object that implement Countable}
    • 你的输入必须是这样的:
    • 新错误:警告:fopen() 期望参数 1 是有效路径,警告中给出的数组:feof() 期望参数 1 是资源,警告中给出的布尔值:fgetcsv() 期望参数1 为资源,bool 中给出
    • 用 fopen() 改变这一行: $handle = fopen($_FILES['file']['tmp_name'][$i], "r");
    • 谢谢它现在可以改变答案,所以我接受它作为答案!
    猜你喜欢
    • 2012-05-15
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 2016-06-05
    • 2015-10-06
    • 1970-01-01
    • 2012-04-17
    • 2013-09-15
    相关资源
    最近更新 更多