Stefan: Fehler im SQL-Insert und ich finde ihn nicht.

Moin,

langsam verzweifle ich. Nachfolgender SQL-Ausdruck bemängelt der PHP Interpreter mit " parse error, unexpected T_VARIABLE"

$sql= 'INSERT INTO kunden(kunden.anrede,kunden.vname, kunden.nname, kunden.mail,kunden.time) VALUES("'.$anrede.'","'.$vuser.'","'.$nuser.'","'$umail.'",now()");';

Jedoch bringt ein:
echo $anrede." <-anrede. |". $vuser. " <-vuser |" .$nuser. " <- nuser | " . $umail." <-umail  " ;
eine Fehlerfreie Ausgabe. Und das now() am Ende wird von MySql sauber geschluckt, was ja eh wurscht ist, da PHP ja eine Variable bemängelt. Sieht jemand meinen Fehler?
Achja, die selben Daten (bis auf now()) werden vorher auch per Mail an mich gesendet und sind alle OK. Es ist ein kein fehlendes ";" in der Zeile davor, dort steht folgendes:

echo "Internet: http://www.foobar.tld<br />";
echo "Mail: blah@foobar.tld\n";

Danke allen die den Fehler finden (naja auch allen anderen)
Stafan

  1. Nabend,

    [...] $nuser.'","'$umail.'",now()");';

    ^
    Dort fehlt ein Punkt.

    Bis denne,

    1. Nabend,

      Das ist das Stichwort (Frage: Muss ein Mensch ab und zu schlafen oder geht das auch ohne ;-) ).

      DANKE (Ja ich darf schreien, denn ich starre seit mehr als 30min auf diesen SQL-Ausdruck und das ohne Erfolg.), da war der Fehler.

      Stefan

  2. Hi!

    $sql= 'INSERT INTO kunden(kunden.anrede,kunden.vname, kunden.nname, kunden.mail,kunden.time) VALUES("'.$anrede.'","'.$vuser.'","'.$nuser.'","'$umail.'",now()");';

    Wäre folgende Schreibweise nicht einfacher?

    $sql = "INSERT INTO kunden(kunden.anrede,kunden.vname, kunden.nname, kunden.mail,kunden.time) VALUES('$anrede', '$vuser',' '$nuser', '$umail', now())";

    So mach ich es immer und hab nie Probleme.

    lg, Jan

  3. Huhu Stefan

    $sql= 'INSERT INTO kunden(kunden.anrede,kunden.vname, kunden.nname, kunden.mail,kunden.time) VALUES("'.$anrede.'","'.$vuser.'","'.$nuser.'","'$umail.'",now()");';

    Sieht jemand meinen Fehler?

    Nein, sehen kann man den nicht.

    Aber gefunden habe ich ihn _._ bzw. vermisst ;-)

    Kleiner Tipp, schreibe Deine SQL-Statements mit here doc-Syntax, dann
    wird es viel übersichtlicher.
    Also z.B. so

    $sql = <<< EOT

    INSERT INTO

    kunden
            (
             anrede,
             vname,
             nname,
             mail,
             time
            )
    VALUES

    (
             '$anrede',
             '$vuser',
             '$nuser',
             '$umail',
              now()
             )
    EOT;

    Den Tabellen-Namen "kunden." brauchst Du hier nicht.
    Falls Deine Tabellenspalte "time" vom timestamp Format ist brauchst
    Du auch nicht explizit "now()" vorzugeben, das erledigt die Datenbank für Dich.

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. Huhu lulu,

      Kleiner Tipp, schreibe Deine SQL-Statements mit here doc-Syntax,

      Ja gute Idee, nur der innere Schweinehund lässt sich schwer überzeugen selbst bei solchen Argumenten. Das kommt daher, daß ich in Anfangszeiten (schon ein paar Jahre her) öfter mal Probs mit Leerzeichen und CR/LF hatte bei Files die unter Win erstellt wurden und dann auf Linux/Unix-Geräten laufen sollten, und seit dem blieb es so (trotz Ultraedit/Phase5 und Co.). Ich versuche mich mal dran zu halten.

      Stefan