CSV-Datei über HTML und PHP in MySQL Datenbank übergeben?
Hey.
Ich soll ein HTML und PHP Skript schreiben, mit welchem man eine CSV-Datei hochladen kann. Das Skript soll eine MySQL Datenbank (auf XAMPP bzw. PhpMyAdmin) leeren und dann die Datei einfügen.
Danke für jede Hilfe und Antwort :)
Die CSV-Datei, soll in eine Tabelle, in einer DB eingefügt werden. Vorher soll der Inhalt dieser Tabelle entfernt werden.
Was soll "leeren" hier bedeuten? Soll die gesammte DB gepurged werden?
Achso, ich hatte da was falsch geschrieben. Ich meine die Datei soll in eine Tabelle in einer Datenbank geschrieben werden. Vorher soll diese Tabelle jedoch geleert werden.
1 Antwort
Ich soll ein HTML und PHP Skript schreiben, mit welchem man eine CSV-Datei hochladen kann.
Wie du Dateien hochladen kannst, hast du offensichtlich schon herausgefunden, deswegen sehe ich keinen Grund, in diesem Thread noch einmal konkret darauf einzugehen.
Das Skript soll eine MySQL Datenbank (auf XAMPP bzw. PhpMyAdmin) leeren (...)
Wie du Datenbankanfragen vornehmen kannst, weißt du auch schon. Alle Einträge einer Tabelle kann man via DELETE löschen.
DELETE FROM your_table
(...) und dann die Datei einfügen.
Die CSV-Datei kannst du mit fgetcsv einlesen. Alternativ bietet PHP noch eine Palette an anderen Lesefunktionen für Dateien an (siehe hier).
Für die Speicherung in der Datenbank könntest du eine Transaktion vornehmen. Diese bündelt mehrere Queries. Für den SQL-Query benötigst du ein INSERT INTO.
Mit mysqli_begin_transaction wird sie gestartet. Im Anschluss baust du dir ein Prepared Statement, iterierst über alle Zeilen, die in die Datenbank sollen und bindest je Iteration die Zellendaten an das Prepared Statement. Direkt danach kannst du den Eintrag mit execute bestätigen.
Ganz zum Schluss (nach der Schleife) reicht ein Aufruf von mysqli_commit, um die Eingaben tatsächlich zu bestätigen. Schau dir dazu die Beispiele in der Dokumentation an, auch wenn dort nur ein INSERT vorgenommen wird.
Ok, vielen Dank! Damit würde ich vielleicht klarkommen.
Aber könntest du eventuell ein Code-Beispiel geben, also einen konkreten Aufbau?
Danke :)