这是我的脚本.
if (isset($_POST['submit'])) {
if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
echo "
" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "
";echo "
Displaying contents:
";readfile($_FILES['filename']['tmp_name']);
echo "
";
echo $headers;
}
$handle = fopen($_FILES['filename']['tmp_name'], "r");
$header = fgetcsv($handle);
while(! feof($handle)){
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$import="INSERT into CSVtest($header[0],$header[1],$header[2],$header[3],$header[4])
values
('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]')";
mysql_query($import) or die(mysql_error());
}
}
fclose($handle);
echo "Done";
}
这是我根据标题将数据插入数据库的方式,即使它与表列的排列方式不同.
如果csv只有“cell,firstname,lastname”(并且我的表只有这3列)那么它仍然可以工作……但是如果有“cell,address,company,firstname,lastname”那么它会告诉我未知的列错误.
实际上我希望有一个函数,即使csv中有很多列,表中不存在,它仍然可以选择正确的列并插入表中.
任何人都可以给我提示如何更改我的脚本吗?我知道有很多错误…显示我的低标准脚本真的很尴尬…
提前致谢.
解决方法:
您可能希望使用mysql_fetch_field来获取当前列,然后遍历每个标头以确保在构建查询时它存在于表中.
标签:php,import,mysql,header,csv
来源: https://codeday.me/bug/20190630/1336682.html