【发布时间】:2013-06-28 00:22:19
【问题描述】:
所以我将 CSV 文件上传到我的 mysql 数据库,我希望它始终跳过第一行,即第 0 行,其中包含列名
我使用的当前代码
//connect to the database
$connect = mysql_connect("localhost","username","password");
mysql_select_db("mydatabase",$connect); //select the table
//
if ($_FILES[csv][size] > 0) {
//get the csv file
$file = $_FILES[csv][tmp_name];
$handle = fopen($file,"r");
//loop through the csv file and insert into database
do {
if ($data[0]) {
mysql_query("INSERT INTO contacts (contact_first, contact_last, contact_email) VALUES
(
'".addslashes($data[0])."',
'".addslashes($data[1])."',
'".addslashes($data[2])."'
)
");
}
} while ($data = fgetcsv($handle,1000,",","'"));
//
//redirect
header('Location: import.php?success=1'); die;
}
我需要删除以下行 来源、名字、姓氏、电话 1、电话 2、联系电子邮件、职务、参考编号、日期、状态
我本来打算只做一个if($data[0]=="Source") 但问题是如果他们更改了 CSV 文件的布局或其他东西。
所以我的问题很简单,我们可以跳过第 0 行吗?
但如果第 0 行的第一件事不是 Source,我可以收到警报以便查看 CSV 文件吗?
【问题讨论】:
-
放一个变量来跟踪迭代,如果它是0或者未定义就不要运行插入查询。
-
LOAD DATA INFILE 比你的方法容易得多,速度也快得多,而且它有一个跳过第一行的设置
-
如果文件布局发生了变化,那么无论如何您都需要重新访问此代码。除非您对可能发生的事情有清楚的了解,否则我不会在这里担心。