1000 FAQ, 500 Anleitungen und Lernvideos. Hier gibt es nur Lösungen!
Lösung eines CSV-Importproblems in einer MySQL-Tabelle
In diesem Handbuch wird erlĂ€utert, wie man ein Problem beim Importieren von .csv-Dateien in eine MySQL-Tabelle löst.Die vorgeschlagene Alternative besteht darin, die CSV-Datei in Zeile fĂŒr Zeile mit PHP zu lesen und die Daten in die MySQL-Datenbank einzufĂŒgen.
Funktion "load data local infile" deaktiviert
Die Funktion LOAD DATA LOCAL INFILE
ermöglicht das Importieren einer CSV-Datei in eine MySQL-Tabelle und wird leider jetzt hÀufig von Hackern verwendet, um Zugriff auf bestimmte Websites zu erhalten, die auf Maschinen gehostet werden, die diese Funktion akzeptieren.
Infomaniak hat die Funktion deaktiviert, um böswillige Handlungen zu bekĂ€mpfen und die Kundendaten so weit wie möglich zu schĂŒtzen. LOAD DATA LOCAL INFILE
Von dieser Ănderung sind keine wichtigen Personen betroffen, die ihre CSV-Dateien (sofern sie nicht "CSV via LOAD DATA") ĂŒber phpMyAdmin aktivieren.
Hier ist eine Alternative, um Daten im CSV-Format weiterhin in eine MySQL-Tabelle zu importieren, ein vollstĂ€ndiges Beispiel fĂŒr den Code mit einer korrekten Fehlerverwaltung fĂŒr das Ăffnen der CSV-Datei und das EinfĂŒgen der Daten in die Datenbank.
Diese Version verwendet mysqli
zur Verbindung mit der Datenbank und den fĂŒr die Eingabe der Daten vorbereiteten Abfragen, wodurch die Sicherheit und KompatibilitĂ€t mit neueren PHP-Versionen verbessert und die Implementierung in Ihrem PHP-Skript oder einfach in eine neue PHP-Datei Ihres Verzeichnisses erleichtert wird /web:
$NomDuFichier = "data.csv";
// Connexion à la base de données MySQL avec mysqli
$link = new mysqli("localhost", "username", "password", "database");
// VĂ©rification de la connexion
if ($link->connect_error) {
die("Ăchec de la connexion : " . $link->connect_error);
}
// Ouverture du fichier CSV en lecture
if (($handle = fopen($NomDuFichier, "r")) !== FALSE) {
// DĂ©composition de chaque ligne du fichier CSV
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
// PrĂ©paration de la requĂȘte SQL
$query = "INSERT INTO `test` VALUES (" . str_repeat('?,', count($data) - 1) . "?)";
$stmt = $link->prepare($query);
// VĂ©rification de la prĂ©paration de la requĂȘte
if ($stmt === FALSE) {
die("Ăchec de la prĂ©paration de la requĂȘte : " . $link->error);
}
// Liaison des paramĂštres
$types = str_repeat('s', count($data)); // Assume que toutes les colonnes sont de type string
$stmt->bind_param($types, ...$data);
// ExĂ©cution de la requĂȘte
if (!$stmt->execute()) {
die("Ăchec de l'exĂ©cution de la requĂȘte : " . $stmt->error);
}
// Fermeture de la déclaration
$stmt->close();
}
// Fermeture du fichier CSV
fclose($handle);
} else {
echo "Erreur : impossible d'ouvrir le fichier.
";
exit(1);
}
// Fermeture de la connexion à la base de données
$link->close();
?>
Hilfe erhalten
Leider ist es nicht möglich, Ihnen genau zu sagen, an welcher Stelle Ihres Skripts diese Codezeilen hinzugefĂŒgt werden sollen.
â FĂŒr zusĂ€tzliche UnterstĂŒtzung Kontaktieren Sie einen Partner oder gratis eine Ausschreibung starten Auch Sie finden heraus, was Sie wollen. Rolle des Gastgebers.
Wenn die vorgeschlagene Alternative ein Problem darstellt, wenn Sie mehrere CSV-Dateien zum Lesen einreichen und das p.ex-Verfahren trotz der Nachrichtenverwaltungspunkte in der PHP-Datei ohne NachrichtenzurĂŒckweisung endet, können die verwendeten Tabellen und Felder falsch indexiert sein, und in diesem Fall wenden Sie sich auch an Ihren Webmaster.
PHP-Dokumentation anzeigen fgetcsv
: http://php.net/manual/fr/function.fgetcsv.php