需要一些帮助。 我上传了一个包含多个记录/行的CSV文件,并希望使用php和mysql将其插入数据库。 请看一下csv。
正如您所看到的,有三条记录我想要获取并插入到我的桌面上。
然而,当我上传这个文件时,它只返回一个数组。 这是回报:
["1","1","1234","12\/1\/2017\r2","2","5678","12\/25\/2018\r3","3","13323","1\/1\/2020"]
任何人都可以帮助我吗? 这是我的代码:
if(isset($_POST["Import"])){
$filename=$_FILES["file"]["tmp_name"];
if($_FILES["file"]["size"] > 0)
{
$file = fopen($filename, "r");
while (($getData = fgetcsv($file, 10000, ",")) !== FALSE)
{
$sql = "INSERT INTO cardtbl (cardid,cardno,cardpin,expdate,datecreated)
VALUES ('".$getData[0]."','".$getData[1]."','".$getData[2]."','".$getData[3]."','".$today."')";
// $result = mysql_query($sql);
if(!isset($result))
{
echo "<script type=\"text/javascript\">
alert(\"Invalid File:Please Upload CSV File.\");
<!--window.location = \"cardlist.php\"-->
</script>";
}
else {
echo "<script type=\"text/javascript\">
alert(\"CSV File has been successfully Imported.\");
window.location = \"cardlist.php\"
</script>";
}
}//end
fclose($file);
}
}
谢谢!
答案 0 :(得分:0)
LOAD DATA INFILE "csv_file_path"
INTO TABLE table_name
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
如果您不想对数据执行任何操作,则可以使用上面的SQL查询插入表中。你可以拿出&#34; IGNORE 1 LINES&#34;查询中的字符串,如果您的文件没有标题。这将解决您的问题。
答案 1 :(得分:0)
似乎PHP无法正确检测到行结束,期望\n
并且CSV文件具有\r
文件结尾(从12/1/2017可以看出) \ r 2)。
根据php文档https://secure.php.net/manual/en/function.fgetcsv.php,您应该使用文件顶部的auto_detect_line_endings
启用ini_set("auto_detect_line_endings", true);