0
可能性の重複ヘッダー行を無視:
Read a file from line X to line Y?インポートMYSQLにCSVしかし
私は、これは以前にカバーされているけど、私が見つけたすべての答えは、LOAD DATAに関連していますINFILEメソッドは、IGNORE 1 LINESを使ってヘッダを無視していますが、私は下のコードでそれを試しましたが、ただエラーを投げます。
<?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);
}
?>
あなたがそれをしたい場合はときに0、例えば、プログラムカウンタ変数と 'continue'を追加一行目。しかし、なぜあなたは 'load data infile'を使うことができるのか、プログラムでそれをやりたいのですか? – Gordon
なぜLOAD DATA INFILEはあなたのニーズに合っていないのですか? – newtover
また、より現代的なmysqliやPDOに移行し、プリペアドステートメントを使用して処理を高速化することを検討することをお勧めします。 – Gordon