PHP Fehler: Undefined offset

Tron36

Ensign
Registriert
Jan. 2011
Beiträge
209
Hallo Leute,

habe folgenden PHP Code geschrieben:
PHP:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "studentadvice";

// Create connection
$dbConnection = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($dbConnection->connect_error) {
    die("Connection failed: " . $dbConnection->connect_error);
}

$columns =array();
$handle = fopen("pseudonoten.csv", "r");
$firstLine = true;

while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
  
    if($firstLine){
        $firstLine = false;

    } elseif (!$firstLine) {

        $SQLquery = buildSQLInsertString($data, "pseudonoten (ID, Unit, Semester, Note, BNF)");
        $result = $dbConnection->query($SQLquery);
        if ($result === TRUE) {
            echo "New record created successfully";
        } else {
            echo "Error: " . $result . "<br>" . $conn->error;
        }
    }
}

fclose($fileHandle);

function buildSQLInsertString($rowContent, $table) {
    return "INSERT INTO " . $table . " VALUES ('" . $rowContent[0] . "', '" . $rowContent[1] . "', '". $rowContent[2] . "', '".$rowContent[3]."', '".$rowContent[4]."')";
}

?>

Bekomme folgende Fehlermeldung, womit ich nicht viel anfangen kan:
Code:
Notice:  Undefined offset: 1 in D:\xampp\htdocs\uni\csvimport\importCSV.php on line 38

Notice:  Undefined offset: 2 in D:\xampp\htdocs\uni\csvimport\importCSV.php on line 38

Notice:  Undefined offset: 3 in D:\xampp\htdocs\uni\csvimport\importCSV.php on line 38

Notice:  Undefined offset: 4 in D:\xampp\htdocs\uni\csvimport\importCSV.php on line 38

Notice:  Undefined variable: conn in D:\xampp\htdocs\uni\csvimport\importCSV.php on line 30

Notice:  Trying to get property 'error' of non-object in D:\xampp\htdocs\uni\csvimport\importCSV.php on line 30
Error:

Als Beispiel CSV gibt es folgende Zeilen:
Code:
ID,Unit,Semester,Note,BNF
1417;143014;3997;5,0;5

Ich hoffe ihr könnt mir weiter helfen.

Lg
Tron36
 
Ähm, ne blöde frage, aber hast du eine Leerzeile in deiner CSV Datei?
 
Versuchs mal mit einem else anstatt einem elseif

Code:
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
 
    if($firstLine){
        $firstLine = false;

    } else {

        $SQLquery = buildSQLInsertString($data, "pseudonoten (ID, Unit, Semester, Note, BNF)");
        $result = $dbConnection->query($SQLquery);
        if ($result === TRUE) {
            echo "New record created successfully";
        } else {
            echo "Error: " . $result . "<br>" . $conn->error;
        }
    }
}
 
Hi Tron,

die Meldung deutet darauf hin, dass der Array-Index 1 (auch 2,3,4) nicht existieren.
Heißt, das Array ist in diesem Moment leer oder hat nicht so viele Indizes wie du versuchst abzufragen.

Du solltest dir mal ausgeben lassen, was in jedem Umlauf drin steht.
Wie Amped geschrieben hat, kann eine Leerzeile der Grund sein, oder er durchläuft mehr Zeilen der CSV als vorhanden sind.

BTW: Aus dem elseif ein else zu machen ist trotzdem etwas sauberer, da das vom Prinzip die gleiche Abfrage nochmal ist

Gruß
 
  • Gefällt mir
Reaktionen: psYcho-edgE
mach mal einen var_dump($rowContent) gleich in zeile 38 zu beginn der funktion, dann siehst ja was drinnen ist :)
Ergänzung ()

und zu den letzten beiden fehlern: die variable hast du nicht $conn genannt sondern $dbConnection
 
  • Gefällt mir
Reaktionen: psYcho-edgE
Hast du die CSV-Datei mit Excel erstellt? Das knallt nämlich ganz gern mal ein paar tausend Leerzeilen an CSV-Dateien ran.
 
  • Gefällt mir
Reaktionen: psYcho-edgE
Zurück
Oben