1000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Risolvi un problema di importazione CSV
Questa guida spiega come risolvere un problema di importazione di un file .csv.
Funzione "load data local infile" disabilitata
La funzione "LOAD DATA LOCAL INFILE" viene utilizzata per importare un file CSV in una tabella MySQL ed è purtroppo spesso utilizzata dagli hacker per ottenere accesso a determinati siti web ospitati su server che accettano questa funzione.
Per contrastare le attività malevole e continuare a proteggere i dati dei nostri clienti il più possibile, abbiamo disabilitato la funzione "LOAD DATA LOCAL INFILE". Le persone che importano i loro file CSV (a condizione che non selezionino "CSV via LOAD DATA") tramite phpMyAdmin non sono interessate da questa modifica.
Ecco un'alternativa per continuare a importare dati in formato CSV in una tabella MySQL, un esempio in poche righe di codice PHP facili da implementare nel proprio script PHP o semplicemente in un nuovo file PHP nella directory /web:
// Il codice sopra è solo un esempio per capire come sostituire questa funzione. Sentitevi liberi di sviluppare il vostro metodo più efficiente per inserire dati.
// Il vostro approccio per il trasferimento dei dati.
$NomeFile = "data.csv";
// Apri il file CSV in modalità lettura
$gestore = fopen($NomeFile, "r");
if ($gestore) {
// Suddividi ogni riga del file CSV
while (($dati = fgetcsv($gestore, 1000, ";", """)) !== FALSE) {
$num = count($dati)-1;
// Genera la query SQL
$query = "INSERT INTO `test` VALUES (";
for ($c=0; $c < $num; $c++) {
$query .= "'" . mysql_real_escape_string($dati[$c]) ."',";
}
$query .= "'" . mysql_real_escape_string($dati[$num]) ."')";
// Inserisci la riga nel database MySQL
mysql_query($query, $link) or die (mysql_error());
$query = NULL;
}
// Chiudi il file CSV
fclose($gestore);
} else {
echo "
Errore: impossibile aprire il file.
\n";exit(1);
}
?>
Sfortunatamente, non possiamo indicare esattamente dove nel tuo script devono essere aggiunte queste righe di codice. Se non riesci a individuare il punto giusto, contatta il tuo webmaster o uno dei nostri partner sulla seguente pagina: http://partenaires.infomaniak.com/appel-offres/.
Se l'alternativa proposta presenta problemi quando invii più file CSV da leggere e, ad esempio, la procedura termina senza inviare un messaggio nonostante i punti di gestione dei messaggi nel file PHP, potrebbe essere che le tabelle e i campi utilizzati siano indicizzati in modo errato. In tal caso, contatta anche il tuo webmaster.
Ti consigliamo anche di consultare la documentazione PHP su fgetcsv qui: http://php.net/manual/fr/function.fgetcsv.php