doukuo9116 2016-11-02 02:53 采纳率: 100%
浏览 65
已采纳

上传包含空白单元格的CSV文件时出现未定义的偏移量错误

This is my CSV File:

https://drive.google.com/open?id=0B_1cAszh75fYTjdobFMwVFdVT2c

This is my code to upload the CSV File and insert data to my mysql table:

if(isset($_POST["submit"]))  
 {  

  $ddates = $_POST['uploaddate'];

  if($_FILES['file']['name'])  
  {  
       $filename = explode('.',$_FILES['file']['name']);  
       if($filename[1] == 'csv')  
       {  
            $handle = fopen($_FILES['file']['tmp_name'], "r");  
            while($data = fgetcsv($handle))  
            {                 
                 $item1 = mysqli_real_escape_string($connect, $data[0]);  
                 $item2 = mysqli_real_escape_string($connect, $data[1]);  
                 $item3 = mysqli_real_escape_string($connect, $data[2]);  
                 $item4 = mysqli_real_escape_string($connect, $data[3]);  
                 $item5 = mysqli_real_escape_string($connect, $data[4]);  
                 $item6 = mysqli_real_escape_string($connect, $data[5]);  
                 $item7 = mysqli_real_escape_string($connect, $data[5]);  
                 $item8 = mysqli_real_escape_string($connect, $data[6]);  
                 $item9 = mysqli_real_escape_string($connect, $data[6]);  
                 $item10 = mysqli_real_escape_string($connect, $data[7]);  
                 $item11 = mysqli_real_escape_string($connect, $data[7]);  
                 $item12 = mysqli_real_escape_string($connect, $data[8]);  
                 $item13 = mysqli_real_escape_string($connect, $data[9]);  
                 $item14 = mysqli_real_escape_string($connect, $data[10]);  
                 $item15 = mysqli_real_escape_string($connect, $data[11]);  
                 $item16 = mysqli_real_escape_string($connect, $data[12]);  




                 $sql="INSERT into tblone(uploaddate, one, two, three, four, five, six, seven, eight, nine, ten, eleven, twelve, thirteen, fourteen, fifteen, sixteen) values('$ddates', '$item1','$item2','$item3','$item4','$item5','$item6','$item7','$item8','$item9','$item10','$item11','$item12','$item13','$item14','$item15','$item16')";  
                 mysqli_query($connect, $sql);  
            }  
            fclose($handle);  
            print "Import done";  
       }  
  }  
 }  

When I try to upload the CSV File it shows Error "Notice: Undefined offset........:"

enter image description here

I know why it shows the error. As you can see, my csv file has 9 columns with column header at top. But the next 4 columns do not have any header. I mean "Debit Amount" "Credit Amount" etc do not have values/headlines at top of those columns.

My code works fine as per as uploading CSV file and inserting data to mysql table is concerned. But the error doesn't look good in the eye.

I want the codes to be executed without showing any error.

Any help regarding this will be highly appreciated.

  • 写回答

1条回答 默认 最新

  • dshdsh2016 2016-11-02 03:21
    关注

    Just put this code on top of you phpfile error_reporting(0);

    or validate first by using isset example code:

    $data1 = (isset($data[0])) ? $data[0] : '';

    so on and so forth then send the values here

    $item1 = mysqli_real_escape_string($connect, $data1);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?