Hallo liebe PHP-Community,
leider plagt mich gerade der Import von Usern. Ich möchte gerne eine CSV hochladen und dann pro Zeile einen INSERT ausführen. Später sollen fehlende Attribute dynamisch gesetzt werden (folgt noch). Aktuell klappt weder der CSV Import, noch das Anlegen der User (wenn das CSV manuell abgelegt wurde). Die CSV Datei soll nur temp. vorhanden bleiben und abschließend verfallen.
Der Aufbau der CSV sieht so aus, also pro Zeile ein Datensatz, Attribute mit Komma getrennt, Datensatz mit Semikolon getrennt
Fehlermeldung
Beim Ausführen erhalte ich jedoch folgende Fehlermeldung, kann diese aber nicht nachvollziehen Problem scheint in der "Execute"-Zeile zu bestehen. Auch scheint die Zuordnung der Attribute (Spalten) nicht ganz zu klappen.
Mein PHP Script
Mein HTML Formular für den Upload
Hoffe ihr könnt einem Anfänger aus der Patsche helfen!
Danke vorab für eure hilfreichen Kommentare
Gruß Frundaa
leider plagt mich gerade der Import von Usern. Ich möchte gerne eine CSV hochladen und dann pro Zeile einen INSERT ausführen. Später sollen fehlende Attribute dynamisch gesetzt werden (folgt noch). Aktuell klappt weder der CSV Import, noch das Anlegen der User (wenn das CSV manuell abgelegt wurde). Die CSV Datei soll nur temp. vorhanden bleiben und abschließend verfallen.
Der Aufbau der CSV sieht so aus, also pro Zeile ein Datensatz, Attribute mit Komma getrennt, Datensatz mit Semikolon getrennt
HTML-Code:
WERT_1, WERT_2, WERT_3; WERT_1, WERT_2, WERT_3; WERT_1, WERT_2, WERT_3;
Beim Ausführen erhalte ich jedoch folgende Fehlermeldung, kann diese aber nicht nachvollziehen Problem scheint in der "Execute"-Zeile zu bestehen. Auch scheint die Zuordnung der Attribute (Spalten) nicht ganz zu klappen.
HTML-Code:
Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'Email' cannot be null in XXX.php:XX Stack trace: #0 XXX.php(XX): PDOStatement->execute() #1 {main} thrown in XXX.php on line XX
Mein PHP Script
PHP-Code:
<?php
if (!empty($_POST['submitimport'])) {
$db = getDB();
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// get the csv file and open it up
$file = $_FILES['uploadedfile']['tmp_name'];
if(($handle = fopen($file, 'r')) !== false)
{
// loop through the file line-by-line
while(($data = fgetcsv($handle, 1000, ',')) !== false)
{
$db = getDB();
$stmt = $db->prepare("INSERT INTO users (Firstname, Name, Email) VALUES (:data0, :data1, :data2)");
$stmt->bindParam('data0', $data[0], PDO::PARAM_STR);
$stmt->bindParam('data1', $data[1], PDO::PARAM_STR);
$stmt->bindParam('data2', $data[2], PDO::PARAM_STR);
$stmt->execute();
}
fclose($handle);
}
}
?>
Mein HTML Formular für den Upload
HTML-Code:
<form enctype="multipart/form-data" method="post" action=""> <fieldset > <input name="uploadedfile" type="file"> </fieldset> <fieldset> <input type="submit" name="submitimport" value="Submit"/> </fieldset> </form>
Hoffe ihr könnt einem Anfänger aus der Patsche helfen!
Danke vorab für eure hilfreichen Kommentare
Gruß Frundaa
Kommentar