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

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

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

  1. <?php
  2. include 'config.php';
  3. $flag = true;
  4. if(isset($_POST["import"])){
  5. $filename=$_FILES["file"]["tmp_name"];
  6. if($_FILES["file"]["size"] > 0)
  7. {
  8. $file = fopen($filename, "r");
  9. while (($getData = fgetcsv($file, 10000, ",")) !== FALSE)
  10. {
  11. if($flag)
  12. {
  13. $flag = false;
  14. continue;
  15. }
  16. $sql = "INSERT into tbl_customer(customer_name,customer_excise_code,city)
  17. values ('".$getData[0]."','".$getData[1]."','".$getData[2]."')";
  18. $result = mysqli_query($conn, $sql);
  19. if(!isset($result))
  20. {
  21. echo "<script type=\"text/javascript\">
  22. alert(\"Invalid File:Please Upload CSV File.\");
  23. window.location = \"index.php\"
  24. </script>";
  25. }
  26. else {
  27. echo "<script type=\"text/javascript\">
  28. alert(\"CSV File has been successfully Imported.\");
  29. window.location = \"index2.php\"
  30. </script>";
  31. }
  32. }
  33. fclose($file);
  34. }
  35. }
  36. ?>
svdrlsy4

svdrlsy41#

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

  1. <?php
  2. $flag = true;
  3. ...
  4. while (($getData = fgetcsv($file, 10000, ",")) !== FALSE) {
  5. if (is_null($getData[0])) {
  6. continue;
  7. }
  8. if ($flag) {
  9. $flag = false;
  10. continue;
  11. }
  12. ...
  13. $result = mysqli_query($conn, $sql);
  14. if (!$result) {
  15. ...
  16. } else {
  17. ...
  18. }
  19. ...
  20. }
  21. ...
  22. ?>
展开查看全部

相关问题