Php 将CSV导入MYSQL,但忽略标题行
可能重复:Php 将CSV导入MYSQL,但忽略标题行,php,mysql,csv,import,Php,Mysql,Csv,Import,可能重复: 我知道之前已经讨论过这一点,但我找到的所有答案都与LOAD DATA Infle方法有关,该方法使用IGNORE 1行忽略标题,我在下面的代码中尝试过,但它只是抛出了一个错误 <?php //database connect info here //check for file upload if(isset($_FILES['csv_file']) && is_uploaded_file($_FILES['csv_file'
我知道之前已经讨论过这一点,但我找到的所有答案都与LOAD DATA Infle方法有关,该方法使用IGNORE 1行忽略标题,我在下面的代码中尝试过,但它只是抛出了一个错误
<?php
//database connect info here
//check for file upload
if(isset($_FILES['csv_file']) && is_uploaded_file($_FILES['csv_file']['tmp_name'])){
//upload directory
$upload_dir = "./csv";
//create file name
$file_path = $upload_dir . $_FILES['csv_file']['name'];
//move uploaded file to upload dir
if (!move_uploaded_file($_FILES['csv_file']['tmp_name'], $file_path)) {
//error moving upload file
echo "Error moving file upload";
}
//open the csv file for reading
$handle = fopen($file_path, 'r');
while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
//Access field data in $data array ex.
$salutation = $data[0];
$leadname = $data[1];
$businessname = $data[2];
$address = $data[3];
$town = $data[4];
$county = $data[5];
$postcode = $data[6];
$phone = $data[7];
$email = $data[8];
$gasoiluser = $data[9];
$dervuser = $data[10];
$kerouser = $data[11];
$annualconsgasoil = $data[12];
$annualconsderv = $data[13];
$annualconskero = $data[14];
$gasoilmargin = $data[15];
$dervmargin = $data[16];
$keromargin = $data[17];
$fueldetails = $data[18];
$lubesdetails = $data[19];
$othernotes = $data[20];
$sentletterday = $data[21];
$sentlettermonth = $data[22];
$sentletteryear = $data[23];
$sentpostcardday = $data[24];
$sentpostcardmonth = $data[25];
$sentpostcardyear = $data[26];
$sentquoteday = $data[27];
$sentquotemonth = $data[28];
$sentquoteyear = $data[29];
$lastvisitedday = $data[30];
$lastvisitedmonth = $data[31];
$lastvisitedyear = $data[32];
$receivegasoilmailinglist = $data[33];
$receivedervmailinglist = $data[34];
$receivekeromailinglist = $data[35];
$gasoilmailinglist = $data[36];
$dervmailinglist = $data[37];
$keromailinglist = $data[38];
$mailtype = $data[39];
$createdby = $data[40];
echo 'Import Successful : ';
echo $leadname;
echo '<br/>';
//Use data to insert into db
$sql = sprintf("INSERT IGNORE hqfjt_chronoforms_data_addupdatelead (salutation,leadname,businessname,address,town,county,postcode,phone,email,gasoiluser,dervuser,kerouser,annualconsgasoil,annualconsderv,annualconskero,gasoilmargin,dervmargin,keromargin,fueldetails,lubesdetails,othernotes,sentletterday,sentlettermonth,sentletteryear,sentpostcardday,sentpostcardmonth,sentpostcardyear,sentquoteday,sentquotemonth,sentquoteyear,lastvisitedday,lastvisitedmonth,lastvisitedyear,receivegasoilmailinglist,receivedervmailinglist,receivekeromailinglist,gasoilmailinglist,dervmailinglist,keromailinglist,mailtype,createdby) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",
mysql_real_escape_string($salutation),
mysql_real_escape_string($leadname),
mysql_real_escape_string($businessname),
mysql_real_escape_string($address),
mysql_real_escape_string($town),
mysql_real_escape_string($county),
mysql_real_escape_string($postcode),
mysql_real_escape_string($phone),
mysql_real_escape_string($email),
mysql_real_escape_string($gasoiluser),
mysql_real_escape_string($dervuser),
mysql_real_escape_string($kerouser),
mysql_real_escape_string($annualconsgasoil),
mysql_real_escape_string($annualconsderv),
mysql_real_escape_string($annualconskero),
mysql_real_escape_string($gasoilmargin),
mysql_real_escape_string($dervmargin),
mysql_real_escape_string($keromargin),
mysql_real_escape_string($fueldetails),
mysql_real_escape_string($lubesdetails),
mysql_real_escape_string($othernotes),
mysql_real_escape_string($sentletterday),
mysql_real_escape_string($sentlettermonth),
mysql_real_escape_string($sentletteryear),
mysql_real_escape_string($sentpostcardday),
mysql_real_escape_string($sentpostcardmonth),
mysql_real_escape_string($sentpostcardyear),
mysql_real_escape_string($sentquoteday),
mysql_real_escape_string($sentquotemonth),
mysql_real_escape_string($sentquoteyear),
mysql_real_escape_string($lastvisitedday),
mysql_real_escape_string($lastvisitedmonth),
mysql_real_escape_string($lastvisitedyear),
mysql_real_escape_string($mailtype),
mysql_real_escape_string($receivegasoilmailinglist),
mysql_real_escape_string($receivedervmailinglist),
mysql_real_escape_string($receivekeromailinglist),
mysql_real_escape_string($gasoilmailinglist),
mysql_real_escape_string($dervmailinglist),
mysql_real_escape_string($keromailinglist),
mysql_real_escape_string($createdby)
);
mysql_query($sql) or (mysql_query("ROLLBACK") and die(mysql_error() . " - $sql"));
}
//delete csv file
unlink($file_path);
}
?>
只需从循环之前的文件中读取,手动跳过一行即可:
//open the csv file for reading
$handle = fopen($file_path, 'r');
// read the first line and ignore it
fgets($handle);
while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
// do your thing
}
只需在循环之前从文件中读取,手动跳过一行即可:
//open the csv file for reading
$handle = fopen($file_path, 'r');
// read the first line and ignore it
fgets($handle);
while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
// do your thing
}
如果要以编程方式执行此操作,请添加一个计数器变量,并在其为0时继续,例如第一行。但是,当您可以使用加载数据填充
时,为什么要以编程方式执行此操作?那么,为什么您认为加载数据填充
不适合您的需要呢,您可能需要考虑切换到更现代的MySqLi或PDO,并使用准备好的语句来加快进程。如果您想以编程方式添加一个计数器变量和<代码>继续<代码>,当它的0行,例如第一行。但是,当你可以使用<代码>加载数据< /COD> >时,为什么你要用编程来实现它?为什么你认为加载数据Ib/Case>不适合你的需求?而且,你可能想考虑切换到更现代的MySqLi或PDO,并使用准备好的语句来加快进程。很好,谢谢!,那很好用。