2017-10-12 173 views
0

这是我导入csv数据时使用的代码,但是我应该如何使它从第二行开始导入数据?由于第一行是列名本身(ID,Student Name,Subject Code,Subject Name,Unit,Grade)将csv数据从第2行导入到mysql数据库中

if (isset($_POST["submitgrade"])){ 
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($con, $data[0]); 
     $item2 = mysqli_real_escape_string($con, $data[1]); 
     $item3 = mysqli_real_escape_string($con, $data[2]); 
     $item4 = mysqli_real_escape_string($con, $data[3]); 
     $item5 = mysqli_real_escape_string($con, $data[4]); 
     $item6 = mysqli_real_escape_string($con, $data[5]); 
     $grade = "INSERT into subj (username,name,code,title,unit,grade) values ('$item1','$item2','$item3','$item4','$item5','$item6')"; 
     mysqli_query($con,$grade); 
    } 
    fclose($handle); 
    echo 'Upload Grade Success'; 
}} 

回答

1

权之前while循环开始通过CSV文件进行迭代,写的声明$data = fgetcsv($handle)一次。然后按照原样启动循环。循环将从CSV文件中的第二行开始。

+0

在第19行的C:\ xampp \ htdocs \ veritas \ professor-portal.php中的'(T_WHILE)'中出现“意外”错误 – Lloyd

+0

在上述语句后面加上分号。 – shahsani

+0

您可能在声明后忘记了分号。你应该把它写为 '$ data = fgetcsv($ handle);' – shahsani

0

您可以添加一个计数器和一个变量以方便访问。 $ startAtLine将从第1行开始。

<?php 
if (isset($_POST["submitgrade"])){ 
    if ($_FILES["file"]["name"]){ 

     //These two lines are added 
     $startAtLine = 0; 
     $counter = 0; 

     $filename = explode('.',$_FILES["file"]["name"]); 
     if ($filename[1] == 'csv') 
      $handle = fopen($_FILES["file"]["tmp_name"], "r"); 
     while ($data = fgetcsv($handle)) 
     { 
      if(++$counter<$startAtLine) 
       continue; 
      $item1 = mysqli_real_escape_string($con, $data[0]); 
      $item2 = mysqli_real_escape_string($con, $data[1]); 
      $item3 = mysqli_real_escape_string($con, $data[2]); 
      $item4 = mysqli_real_escape_string($con, $data[3]); 
      $item5 = mysqli_real_escape_string($con, $data[4]); 
      $item6 = mysqli_real_escape_string($con, $data[5]); 
      $grade = "INSERT into subj (username,name,code,title,unit,grade) values ('$item1','$item2','$item3','$item4','$item5','$item6')"; 
      mysqli_query($con,$grade); 
     } 
     fclose($handle); 
     echo 'Upload Grade Success'; 
    }} 
?>