我想上传大量的CSV文件到MySQL数据库任何人都可以帮助我,表格由10个字段组成,但我只想上传到表格中没有标题的5个字段。我想这跟做PHP在浏览器将大型CSV文件上传到Mysql数据库
$filename = $_FILES['sel_file']['tmp_name'];
<?php
if($_FILES["file"]["type"] != "application/vnd.ms-excel"){
die("This is not a CSV file.");
}
elseif(is_uploaded_file($_FILES['file']['name'])){
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$dbname = 'cbt_software';
$link = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql server');
mysql_select_db('cbt_software') or die(mysql_error());
//Process the CSV file
$handle = fopen($_FILES['file']['name'], "r");
$data = fgetcsv($handle, 1000, ";");
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
$att0 = mysql_real_escape_string($data[0]);
$att1 = mysql_real_escape_string($data[1]);
$att2 = mysql_real_escape_string($data[2]);
$att3 = mysql_real_escape_string($data[3]);
$att4 = mysql_real_escape_string($data[4]);
$sql = "INSERT INTO `course_reg` (`coursecode`,`coursename`,`coursedescription`,`coursemaster`,`courselevel`)VALUES ('$att0','$att1','$att2','$att3','$att4')";
mysql_query($sql) or die(mysql_error());
}
mysql_close($link);
echo "CSV file successfully imported.";
}
else{
die("You shouldn't be here");
}
?>
起初,这导入所有字段从CSV到数据库只是一个场后,我的代码篡改它不recognicing它是个CSV文件。
看来你正在测试上传的文件是否是Excel电子表格,而不是CSV文件。要么跳过该检查,要么检查以“.csv”结尾的文件名(当然,这并不意味着它确实是一个CSV文件)。 –
另外,您还没有检查到fopen()调用成功。 –
此外,它看起来像你正在看错文件名 - $ _FILES ['文件'] ['名称']是客户端提供的名称,你需要$ _FILES ['文件'] ['tmp_name']为上传的临时文件的文件名是作为服务器存储的。 (将'文件'改为文件输入框的名称。) –