mysql从csv插入到表中 - 删除第一行

时间:2011-12-08 14:40:51

标签: php mysql

是否可以将csv文件插入表中,并指示查询始终忽略csv文件中的第一行。用户将上传文件,但第一行将是列标题,因此我需要查询忽略第一行。我的脚本目前看起来像这样:

<?php
include 'datalogin.php';

      move_uploaded_file($_FILES["fileCSV"]["tmp_name"],
      "quiz/" . $_FILES["fileCSV"]["name"]);

    $objCSV = fopen("quiz/".$_FILES["fileCSV"]["name"], "r");
        while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
        $strSQL = "INSERT INTO ex_question1 ";
        $strSQL .="(id,tn,qnr,qtype,pic,question,option1,option2,option3,option4) ";
        $strSQL .="VALUES ";
        $strSQL .="('".$objArr[0]."','".$objArr[1]."','".$objArr[2]."','".$objArr[3]."','".$objArr[4]."','".$objArr[5]."','".$objArr[6]."','".$objArr[7]."','".$objArr[8]."','".$objArr[9]."') ";
        $objQuery = mysql_query($strSQL);
    }
    fclose($objCSV);

    echo "Import completed.";
?> 

2 个答案:

答案 0 :(得分:3)

在进入循环之前,只需致电fgetcsv($objCSV, 1000, ",")一次:

 $objCSV = fopen("quiz/".$_FILES["fileCSV"]["name"], "r");
 fgetcsv($objCSV, 1000, ","); // skip first row
 while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
    $strSQL = "INSERT INTO ex_question1 ";
    $strSQL .="(id,tn,qnr,qtype,pic,question,option1,option2,option3,option4) ";
    $strSQL .="VALUES ";
    $strSQL .="('".$objArr[0]."','".$objArr[1]."','".$objArr[2]."','".$objArr[3]."','".$objArr[4]."','".$objArr[5]."','".$objArr[6]."','".$objArr[7]."','".$objArr[8]."','".$objArr[9]."') ";
    $objQuery = mysql_query($strSQL);
}
fclose($objCSV);

NB。您的代码很容易进行SQL注入,请正确地转义输入变量或使用预准备语句!

答案 1 :(得分:2)

考虑偶数LOAD DATA命令和IGNORE选项

http://dev.mysql.com/doc/refman/5.1/en/load-data.html