1000 FAQ, 500 Anleitungen und Lernvideos. Hier gibt es nur Lösungen!
Lösung eines CSV-Importproblems in einer MySQL-Tabelle
Dieser Leitfaden erläutert, wie ein Problem beim Importieren einer .csv-Datei in eine MySQL-Tabelle behoben werden kann. Die vorgeschlagene Alternative besteht darin, die CSV-Datei Zeile für Zeile mit PHP zu lesen und die Daten in die MySQL-Datenbank einzufügen.
Deaktivierter Befehl "load data local infile"
Der Befehl "LOAD DATA LOCAL INFILE" ermöglicht es, eine CSV-Datei in eine MySQL-Tabelle zu importieren, und wird leider von Hackern häufig missbraucht, um Zugriff auf bestimmte Websites zu erhalten, die diese Funktion akzeptieren.
Um gegen böswillige Handlungen vorzugehen und die Daten der Kunden so weit wie möglich zu schützen, hat Infomaniak den Befehl "LOAD DATA LOCAL INFILE" deaktiviert. Von dieser Änderung nicht betroffen sind Personen, die ihre CSV-Dateien importieren (sofern sie "CSV via LOAD DATA" nicht ankreuzen) über phpMyAdmin.
Hier ist eine Alternative, um weiterhin Daten im CSV-Format in eine MySQL-Tabelle zu importieren, ein Beispiel in ein paar einfachen PHP-Zeilen, die in Ihr PHP-Skript implementiert werden können oder einfach in eine neue PHP-Datei in Ihrem /web-Verzeichnis:
// Der obige Code wird nur als Beispiel angeboten, damit Sie verstehen können, wie diese Funktion ersetzt werden kann. Sie sind frei, Ihre eigene effizientere Methode zum Einfügen von Daten zu entwickeln.
$Dateiname = "daten.csv";
// Öffnen der CSV-Datei zum Lesen
$handle = fopen($Dateiname, "r");
if ($handle) {
// Jede Zeile der CSV-Datei aufteilen
while (($daten = fgetcsv($handle, 1000, ";", """)) !== FALSE) {
$anzahl = count($daten)-1;
// SQL-Abfrage generieren
$abfrage = "INSERT INTO `test` VALUES (";
for ($c=0; $c < $anzahl; $c++) {
$abfrage .= "'" . mysql_real_escape_string($daten[$c]) ."',";
}
$abfrage .= "'" . mysql_real_escape_string($daten[$anzahl]) ."')";
// Zeile in die MySQL-Datenbank einfügen
mysql_query($abfrage, $verbindung) or die (mysql_error());
$abfrage = NULL;
}
// Schließen der CSV-Datei
fclose($handle);
} else {
echo "
Fehler: Die Datei kann nicht geöffnet werden.
\n";exit(1);
}
?>
Leider ist es unmöglich, genau anzugeben, an welcher Stelle in Ihrem Skript diese Zeilen Code hinzugefügt werden sollen.
⚠️ Für weitere Hilfe kontaktieren Sie einen Partner oder füllen Sie eine Ausschreibung aus — lesen Sie auch die Rolle des Hosts.
Wenn die vorgeschlagene Alternative Probleme verursacht, wenn Sie mehrere CSV-Dateien zum Lesen einreichen und das Verfahren ohne Rückgabe einer Nachricht endet, obwohl die Nachrichtenverarbeitungspunkte in der PHP-Datei vorhanden sind, ist es möglich, dass die verwendeten Tabellen und Felder falsch indiziert sind. In diesem Fall wenden Sie sich bitte ebenfalls an Ihren Webmaster.
Überprüfen Sie auch die PHP-Dokumentation für fgetcsv hier: http://php.net/manual/fr/function.fgetcsv.php