Tobias Hager: INSERT trägt nur Nullen in Datenbank ein

Hallo!

Ich habe folgendes Problem: Ich möchte in meiner Datenbank einen neuen Eintrag anlegen:

$result2 = mysql_query("INSERT INTO dienstplan5280 (jahr,monat,tag)
                   VALUES ('datum[$i][2]','datum[$i][1]','datum[$i][0]')");

echo mysql_error();

Er erstellt nun die neuen Einträge übernimmt jedoch nicht die Daten aus den Variablen, sondern setzt alles auf Nullm OBWOHL ich die gewünschten Werte bekomme, wenn ich meine Variablen direkt vorher ausgeben lasse.

Fehler spuckt er mir auch keine aus.

Hat da jemand eine Idee?

Wäre sehr dankbar dafür!

Viele Grüße

Toby

  1. Hallo Toby,

    so wie ich das sehe fügst Du mit dem SQL-String die Variabeln als Text-Werte in den Datensatz ein. Du musst die Werte der Datumsvariable ja als Text in den String einfügen.

    Versuche es mal hiermit:

    strSQL = "INSERT INTO dienstplan5280 (jahr,monat,tag) VALUES ('" & datum[$i][2] & "','" & datum[$i][1] & "','" & datum[$i][0] & "')";

    $result2 = mysql_query(strSQL);

    Geklappt?

    Gruß
    Tim

    1. Axo... und außerdem werden Daten (=Plural von Datum) zwischen # und nicht zwischen ' eingefügt. Und das ganze in dem folgenden Format:

      #MM/DD/YY#

      Gruß
      Tim

      1. Hello,

        #MM/DD/YY#

        hmh, das kenn ich auch, aber das ist mehr eine Eigenart von Microsoft-Systemen. MySQL ist generell sehr unempfindlich bei automatischem casten und nimmt sehr bereitwillig Daten als '-Strings an.

        MfG
        Rouven

        --
        -------------------
        There's no such thing as a free lunch  --  Milton Friedman
    2. Hallo Toby,

      Versuche es mal hiermit:

      strSQL = "INSERT INTO dienstplan5280 (jahr,monat,tag) VALUES ('" & datum[$i][2] & "','" & datum[$i][1] & "','" & datum[$i][0] & "')";

      $result2 = mysql_query(strSQL);

      Geklappt?

      Gruß
      Tim

      Vielen Dank hat geklappt! :)

    3. Moin!

      so wie ich das sehe fügst Du mit dem SQL-String die Variabeln als Text-Werte in den Datensatz ein. Du musst die Werte der Datumsvariable ja als Text in den String einfügen.

      Das ist bei MySQL egal - bzw. erlaubt MySQL nur Strings als Übergabe, lediglich Zahlen können auch ohne einfache Anführungszeichen übergeben werden - das ist allerdings nicht empfehlenswert, wenn man userdefinierte Zahlenwerte mit Escaping in den SQL-String einfügen muß.

      Versuche es mal hiermit:

      strSQL = "INSERT INTO dienstplan5280 (jahr,monat,tag) VALUES ('" & datum[$i][2] & "','" & datum[$i][1] & "','" & datum[$i][0] & "')";

      Ganz schlechte Idee, wir haben hier PHP, kein VBScript. Der Stringverbindungsoperator ist kein &, sondern der . Punkt.

      Außerdem hast du ebenso wie der OP vor "datum" das $-Zeichen vergessen. Eine Einstellung der Fehlernachricht mit error_reporting(E_ALL) hätte da sofort Notices ausgeworfen und dieses Problem simpel dokumentiert.

      - Sven Rautenberg

      --
      "Love your nation - respect the others."
  2. Servus,

    Hat da jemand eine Idee?

    Nein, wir können nur raten, da wir weder wissen, welchen Inhalt deine Variablen, noch welchen Feldtyp deine Spalten haben. Du möchtest dir aber den Typ date anschauen.

    Gruss
    Patrick

    --
    sh:( fo:| ch:? rl:( br:> n4:( ie:% mo:) va:} de:> zu:) fl:| ss:| ls:[ js:|
  3. Hi,

    $result2 = mysql_query("INSERT INTO dienstplan5280 (jahr,monat,tag)
                       VALUES ('datum[$i][2]','datum[$i][1]','datum[$i][0]')");

    möchtest du nicht eigentlich die Werte der Array-Variablen $datum[$i][] eintragen, anstatt der Strings 'datum[$i][0]'?

    Er erstellt nun ...
    Fehler spuckt er mir auch keine aus.

    Er? Wer?

    Und überhaupt: Warum werden eigentlich Datenbank-Probleme immer wieder unter dem Topic "PHP" anstatt "DATENBANK" eingeordnet?

    Gute Nacht,
     Martin

    --
    F: Was macht ein Offizier, der in der Nase bohrt?
    A: Er holt das Letzte aus sich heraus.
    1. Hello,

      möchtest du nicht eigentlich die Werte der Array-Variablen $datum[$i][] eintragen, anstatt der Strings 'datum[$i][0]'?
      Und überhaupt: Warum werden eigentlich Datenbank-Probleme immer wieder unter dem Topic "PHP" anstatt "DATENBANK" eingeordnet?

      hehe, vielleicht aus weiser Voraussicht? *g*

      MfG
      Rouven

      --
      -------------------
      When the only tool you've got is a hammer, all problems start to look like nails.