• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datensätze mittels PHP in DB eintragen

Dsimon24

Mitglied
Hallo zusammen,

nun habe ich noch ein anderes Problem,
zu dem ich leider keine Lösung im Internet finden kann...
Ich versuche gerade Daten in meine DB einzupflegen.

Der Code:
PHP:
$sql = "INSERT INTO erfassung (id, datum, betrag, bemerkung, optKategorie, optBemerkung, item_order)
VALUE ( for ($i=0; $i < 7; $i++)  '$theData[$zahlenArray[$i]]',  )";
$ergebnis = $mysqli->query($sql);   
echo "Datensatz erfolgreich eingetragen!<br>";

Mit dem Array möchte ich die jeweiligen Werte von id bis item_order auslesen.
Dies funktioniert auch, jedoch nur nicht in Kombination DB und der Schleife.

Kann ich sowas nicht umsetzen, um Daten in eine DB zu speichern?

Gruß, David
 
Werbung:
Prinzipiell geht das, klar, aber hast du mal ein echo von $sql gemacht, bevor du es an die DB schickst? Ich denke nicht, dass da das drin steht, was du erwartest ;)
 
Ich pack mal den gesamten Code hier rein,
vielleicht ist das besser...

PHP:
foreach ($sheetData as $theData)
{
    if ($theData['A'] != "id")
    {
        $sql = "INSERT INTO erfassung (id, datum, betrag, bemerkung, optKategorie, optBemerkung, item_order)
        VALUE ( for ($i=0; $i < 7; $i++)  '$theData[$zahlenArray[$i]]',  )";

        $ergebnis = $mysqli->query($sql);   
        echo "Datensatz erfolgreich eingetragen!<br>";
    }
}

Der zeigt mir auch in der Zeile "VALUE ..." einen Syntaxfehler an.
Ich finde da keinen Fehler - könnte es vielleicht daran liegen?

Mein Server (Win12) gibt mir mal wieder eine Menge "Internal Server Error´s" aus.
Ich habe leider noch immer nicht herausgefunden, wo ich das umstellen kann.
 
Werbung:
Werbung:
Auch $theData[$zahlenArray[$i]] scheint mir zu umständlich, aber da man nur einen Ausschnitt des Quellcodes kennt, kann man dazu nicht viel mehr sagen.
 
Dann müsste sich das doch ohne Schleife eigentlich wie folgt realisieren lassen (oder?):

PHP:
        $sql = "INSERT INTO erfassung (id, datum, betrag, bemerkung, optKategorie, optBemerkung, item_order)
        VALUES ('$theData[$zahlenArray[0]]', '$theData[$zahlenArray[1]]', '$theData[$zahlenArray[2]]', '$theData[$zahlenArray[3]]', '$theData[$zahlenArray[4]]', '$theData[$zahlenArray[5]]', '$theData[$zahlenArray[6]]')";
        
        $ergebnis = $mysqli->query($sql);  
        echo "Datensatz erfolgreich eingetragen!<br>";

Wie kann ich das sonst mit einer Schleife realisieren?

Im oben gennanten Code word übrigens auch
ein Syntax Error ausgegeben - aber was ist falsch?
 
Werbung:
Ich rate dir dringends von solchen Dingen ab, denn das ist völlig unübersichtlich und erschwert die Fehlersuche unnötig. Und gerade als Anfänger sollte man besser einen Quellcode schreiben, der leicht lesbar ist, auch wenn man vermeintlich mehr zu tippen hat:
PHP:
foreach ($sheetData as $theData)
{
    if ($theData['A'] != "id")
    {
        $id           = $theData['A'];
        $datum        = $theData['B'];
        $betrag       = $theData['C'];
        $bemerkung    = $theData['D'];
        $optKategorie = $theData['E'];
        $optBemerkung = $theData['F'];
        $item_order   = $theData['G'];
      
        $sql = "INSERT
                  INTO
                    `erfassung` (
                      `id`,
                      `datum`,
                      `betrag`,
                      `bemerkung`,
                      `optKategorie`,
                      `optBemerkung`,
                      `item_order`)
                  VALUES (
                      $id,
                      '$datum',
                      '$betrag',
                      '$bemerkung',
                      $optKategorie,
                      '$optBemerkung',
                      $item_order)";

        $ergebnis = $mysqli->query($sql)
          or die ("MySQL-Error: " . $mysqli->error());
        
        echo "Datensatz erfolgreich eingetragen!<br>";
    }
}

Ich gehe mal davon aus, dass id, optKategorie und item_order als Integer und der Rest als Varchar in der DB definiert sind. Allerdings würde ich da noch einiges ändern, das Datum in das Date-Format bringen, den Betrag als float ohne das €.
 
Werbung:
Zurück
Oben