Я хочу загрузить CSV-файл в таблицу sql. Вот мой код:
<?php include "connection.php"; //Connect to Database $deleterecords = "TRUNCATE TABLE axioma_ordini"; //empty the table of its current records mysql_query($deleterecords); //Upload File if (isset($_POST['submit'])) { if (is_uploaded_file($_FILES['filename']['tmp_name'])) { echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "</h1>"; echo "<h2>Displaying contents:</h2>"; readfile($_FILES['filename']['tmp_name']); } //Import uploaded file to Database $handle = fopen($_FILES['filename']['tmp_name'], "r"); while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $import="INSERT into axioma_ordini(`id`, `Famiglia`, `Cod Cliente`, `Ragione Sociale`, Articolo, Descrizione, Tipo, `Valore Euro`, Valuta, `Valore in Valuta`, Cambio, `Mese Competenza`, Anno, `Cir Medio`, Giorni, Satellite, `Satellite per Risorsa`, NumeroDocumento, `Data Doc`, `Nome Nave`, `Modem S/N`, `Burst Fwd`, `Burst Rtn`, Condivisione, `Cir Fwd`, `Cir Rtn`, `Cir Tot`, Business, Tecnologia,`Data Scadenza Ordine`, Network, Transponder, Nazione) values('','$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]','$data[10]','$data[11]','$data[12]','$data[13]','$data[14]','$data[15]','$data[16]','$data[17]','$data[18]','$data[19]','$data[20]','$data[21]','$data[22]','$data[23]','$data[24]','$data[25]','$data[26]','$data[27]','$data[28]','$data[29]','$data[30]','$data[31]')"; mysql_query($import) or die(mysql_error()); } fclose($handle); print "Import done"; //view upload form }else { print "Upload new csv by browsing to file and clicking on Upload<br />\n"; print "<form enctype='multipart/form-data' action='upload.php' method='post'>"; print "File name to import:<br />\n"; print "<input size='50' type='file' name='filename'><br />\n"; print "<input type='submit' name='submit' value='Upload'></form>"; } ?>
Он успешно импортирует, но только в первом столбце: Famiglia (и id работает). Остальные из них не имеют значения или значения 0. В файле, который я хочу импортировать, есть данные. Кроме того, в famiglia, который является varchar 5, он берет первое число из следующего столбца. Итак, вместо biz это apperas biz; 8 (8 – первое число из следующего столбца).
Кто-нибудь знает, где может быть проблема?
Благодаря!
Я нашел, в чем проблема. Это был неправильный разделитель: вместо;
($ data = fgetcsv ($ handle, 1000, ",")
должно было
($ data = fgetcsv ($ handle, 1000, ";")
Может быть, это помогает кому-то …