Daniel#: Werte aus Formular werden nicht in MySQL geschrieben

Guten Morgen!

Ich übertrage aus einem Formular mit PHP Werte nach MySQL:

$sql_eintrag = "INSERT INTO Daten (ID, ADRESSE, PLZ, STADTTEIL) VALUES  (ID='".$_POST['ID']."',     ADRESSE='".$_POST['ADRESSE']."',      PLZ='".$_POST['PLZ']."',       STADTTEIL='".$_POST['STADTTEIL']."')";
$eintrag = mysql_query ($sql_eintrag) or die("Fehler: ".mysql_error());

Das echo "SQL-QUERY: ".$sql_eintrag; ergibt eigentlich etwas richtiges:

Anlegen erfolgreich! SQL-QUERY: INSERT INTO Daten (ID, ADRESSE, PLZ, STADTTEIL) VALUES (ID='9999', ADRESSE='testadr', PLZ='12345', STADTTEIL='test')

Wenn ich aber in die DB gucke steht da leider nix für den entsprechenden DS. Es wird zwar ein neuer angelegt, aber die Felder sehen so aus:

ID |  ADRESSE |  PLZ    |  STADTTEIL
---------------------------------
0  |   NULL   | NULL    |   NULL

Völlig ratlos...
Daniel

  1. Hello,

    und was ergibt mysql_error bzw. was ist der Rückgabewert von mysql_query? Davon abgesehen, solltest du dich schleunigst mit dem Thema SQL-Injection befassen.

    MfG
    Rouven

    --
    -------------------
    Death is nature's way of telling you to slow down.
    1. Danke für den Tip mit Injection... ich lese staunend-bestürzt...

      und was ergibt mysql_error bzw. was ist der Rückgabewert von mysql_query?

      Ja nix (siehe Eingangspost). Oder meinste was anderes?

      Daniel

  2. hi,

    INSERT INTO Daten (ID, ADRESSE, PLZ, STADTTEIL) VALUES (ID='9999', ADRESSE='testadr', PLZ='12345', STADTTEIL='test')

    Was ist denn das bitte für eine Syntax?
    Was soll bei den VALUES das Feldname='Wert' bedeuten?

    Wenn ich aber in die DB gucke steht da leider nix für den entsprechenden DS. Es wird zwar ein neuer angelegt, aber die Felder sehen so aus:

    ID |  ADRESSE |  PLZ    |  STADTTEIL

    0  |   NULL   | NULL    |   NULL

    Würde mich nicht wundern, wenn das an deiner eigenwilligen Syntax liegt.
    Die mag zwar syntaktisch korrekt sein - inhaltlich erscheint sie mir aber reichlich blödsinnig.
    Vermutlich interpretiert MySQL das an der Stelle als Vergleich oder so - und da kommen dann die NULL-Werte bei raus.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Die mag zwar syntaktisch korrekt sein - inhaltlich erscheint sie mir aber reichlich blödsinnig.

      wie wahr...

      $sql_eintrag = "INSERT INTO Daten (WI, ADRESSE, PLZ, STADTTEIL) VALUES  ('".$_POST['ID']."',        '".$_POST['ADRESSE']."',       '".$_POST['PLZ']."',        '".$_POST['STADTTEIL']."')";

      So gehts. Noch ohne Injection-Verbesserung

      Danke euch beiden!

      1. Ahoi Daniel#,

        So gehts. Noch ohne Injection-Verbesserung

        Die du hoffentlich noch nachholen wirst.

        MfG

    2. echo $begrüßung;

      INSERT INTO Daten (ID, ADRESSE, PLZ, STADTTEIL) VALUES (ID='9999', ADRESSE='testadr', PLZ='12345', STADTTEIL='test')
      ID |  ADRESSE |  PLZ    |  STADTTEIL

      0  |   NULL   | NULL    |   NULL
      Die mag zwar syntaktisch korrekt sein - inhaltlich erscheint sie mir aber reichlich blödsinnig.
      Vermutlich interpretiert MySQL das an der Stelle als Vergleich oder so - und da kommen dann die NULL-Werte bei raus.

      So wird es sein. Meine Interpretation: Für die Spalten ADRESSE, PLZ und STADTTEIL existiert im neu einzufügenden Datensatz kein Wert, weswegen NULL angenommen wird. NULL verglichen mit irgendwas ergibt immer NULL, also wird NULL in die Felder eingetragen. Das gleiche passiert bei ID, nur wird das Feld auf NOT NULL gestellt sein, weswegen der Default-Wert von sicherlich 0 stattdessen verwendet wird.

      Hier noch der Verweis auf das MySQL-Handbuch: INSERT Syntax

      echo "$verabschiedung $name";