Hello,
mir scheint, du hast da was grundsätzliches noch nicht verstanden. Gehen wir es also der Reihe nach mal durch:
Eine SQL-Abfrage von PHP an MySQL zu überreichen wird mittels eines einzigen Strings durchgeführt. In PHP haben wir somit die Möglichkeit, entweder einen mit ' begrenzten oder einen mit " begrenzten String zu verwenden. Wir entscheiden uns für die Variante mit " und nennen die Variable, in der wir das Statement ablegen werden, $dbanfrage.
Nun haben wir also
$dbanfrage = "";
Machen wir mit dem weiter, was wir wissen:
$dbanfrage = "INSERT INTO ";
Nun kommt die erste spannende Stelle: Um sicher zu sein, dass wir nicht in Probleme mit Sonderzeichen oder reservierten Worten geraten, schreiben wir den Tabellennamen nicht direkt in das Statement, sondern umrahmen ihn mit Backticks ():
$dbanfrage = "INSERT INTO test
";{:.language-php} Jetzt geht es also erstmal wieder normal weiter mit der Feldliste, wobei mir übrigens auffällt, dass dein Statement kein gewöhnliches SQL ist, machen wir das also mal (du scheinst da eher eine UPDATE-SET-Syntax zu haben):
$dbanfrage = "INSERT INTO test
(name, vorname, geburtstag) VALUES ()";{:.language-php} Nun haben wir die Felder, die stehen entweder einfach so da, oder konsequenterweise wieder mit Backticks - das sollte auch in deinem Beispiel oben so sein, sie sollten \_im\_ String mit " stehen. Nun bauen wir die Werte ein. Stringwerte, und solche die es eigentlich sind (in dem Fall dein Datum), müssen von SQL in Anführunszeichen stehen, und zwar in einfachen.
$dbanfrage = "INSERT INTO test
(name, vorname, geburtstag) VALUES ('', '', '')";{:.language-php} Was nun noch fehlt sind die Werte - wäre das Datumsfeld nicht, so würde das vorstehende Statement sogar problemlos funktionieren. Als Werte wollen wir jetzt den Inhalt der Postvariablen, aber er soll vorher noch durch eine Funktion gejagt werden - letzteres kann nicht innerhalb des Strings passieren. Wir müssen also den String kurzfristig unterbrechen, den Funktionsaufruf durchführen und das Ergebnis mit dem String verbinden - wir benutzen dazu den Konkatenationsoperator "."
$dbanfrage = "INSERT INTO test
(name, vorname, geburtstag) VALUES ('".mysql_real_escape_string($_POST['name']) ."', '".mysql_real_escape_string($_POST['vorname'])."', '".mysql_real_escape_string($_POST['geburtstag'])."')";`
Klarer geworden?
MfG
Rouven
-------------------
Buy when there's blood running in the street and sell when everyone is pounding at your door, clawing to own your equities -- Wisdom on Wallstreet