是否可以将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.";
?>
答案 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