跳过使用php将csv上传到mysql的第一行

xyhw6mcr  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(387)

我想跳过csv的第一行(头部分),而上传到mysql使用php,但它总是插入到mysql表的第一行,它也不上传mysql的总记录。我的csv中有1000条记录,但一次只能上传174条记录。我使用下面的代码上传到mysql的csv。任何人都知道我做错了什么。

<?php

include 'config.php';
$flag = true;
 if(isset($_POST["import"])){

        $filename=$_FILES["file"]["tmp_name"];      

         if($_FILES["file"]["size"] > 0)
         {
            $file = fopen($filename, "r");
            while (($getData = fgetcsv($file, 10000, ",")) !== FALSE)
             {

 if($flag)
  {
   $flag = false;
    continue;
     }
               $sql = "INSERT into tbl_customer(customer_name,customer_excise_code,city) 
                   values ('".$getData[0]."','".$getData[1]."','".$getData[2]."')";

                   $result = mysqli_query($conn, $sql);
                if(!isset($result))
                {
                    echo "<script type=\"text/javascript\">
                            alert(\"Invalid File:Please Upload CSV File.\");
                            window.location = \"index.php\"
                          </script>";       
                }
                else {
                      echo "<script type=\"text/javascript\">
                        alert(\"CSV File has been successfully Imported.\");
                        window.location = \"index2.php\"
                    </script>";
                }
             }

             fclose($file); 
         }
    }    

 ?>
svdrlsy4

svdrlsy41#

您可以尝试以下建议:
检查文件中是否有空行 if($flag) {...} 你的支票 isset() 将始终返回true,因为mysqli\u query()返回boolean或object,所以您不知道语句是否正确执行。你执行 INSERT 语句,在本例中是 mysqli_query() 将是布尔值,所以只需检查 $result .
PHP:

<?php
$flag = true;
...

while (($getData = fgetcsv($file, 10000, ",")) !== FALSE) {
    if (is_null($getData[0])) {
        continue;
    }
    if ($flag) {
        $flag = false;
        continue;
    }
    ...

    $result = mysqli_query($conn, $sql);
    if (!$result) {
        ...
    } else {
        ...
    }   

    ...
}

...
?>

相关问题