kostenloser Webspace werbefrei: lima-city


Wo liegt der Fehler

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    lassidaassi

    lassidaassi hat kostenlosen Webspace.

    Hallo,

    ich bin gerade dabei ein kleines Gästebuch zu schreiben und bin auch fast fertig, jedoch wird wenn ich einen eintrag schreibe werden nur die namen der Variablen in die Tabelle gesetzt und zwar in 3 zeilen.

    Hoffentlich kann mir jemand sagen was ich falsch mache:

    mysql_query('INSERT INTO db_116772_2.book (user ,time ,text)VALUES ("$un", "$time", "$entry");');


    Danke!
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Versuch es mal so:

    <?
    
    mysql_query('INSERT INTO db_116772_2.book (user ,time ,text)VALUES
    (" . $un . ", " . $time . ", " . $entry . ");');
    
    ?>



    Beitrag geändert: 13.10.2008 17:45:48 von karpfen
  4. naja, also so ganz kommt das nicht hin ^^''



    Das Problem bei diesem String hier
    mysql_query('INSERT INTO db_116772_2.book (user ,time ,text)VALUES ("$un", "$time", "$entry");');

    ist, dass die Anführungszeichen Hochkommas sind (also ' anstatt ").
    In Javascript mag das zwar sein, dass das das selbe ist, aber in PHP sind das unterschiedliche Dinge.
    Man kann zwar mit den Hochkommas einen String kennzeichnen, allerdings werden Sonderzeichen, wie \\n, \\r oder \\t oder eben Variablennamen nicht interpretiert.

    echo '\\\\n'

    gibt somit tatsächlich \\n aus

    echo "\\\\n"

    würde eine leere Zeile ausgeben.

    Selbes gilt wie gesagt für Variablen.
    Ich persönlich verwende Variablennamen (obwohl es möglich ist) nicht in Strings. ich Trenne die Strings immer und verbinde mit einem . die Variablen dann kommen solche Fehler gar nicht erst vor.

    Was ich also vorschlagen würde ist folgendes:

    <?php mysql_query("INSERT INTO db_116772_2.book (user ,time ,text)VALUES (".$un.", ".$time.", ".$entry.")"); ?>


    Jedoch würde daas hier ebenso funktionieren:
    <?php mysql_query("INSERT INTO db_116772_2.book (user ,time ,text)VALUES ('$un', '$time', '$entry');"); ?>


    Gruß xelax90

    EDIT:
    Eine kleine Bitte an die Admins:
    Also ich musste für diesen Thread die \\n und co. zig mal maskieren damit die wirklich angezeigt wurden. (in den Code Tags sogar 4 Backslashes)
    Ich denke nicht, dass es zuuu viel verlang wäre, das mal zu überarbeiten ;)

    Beitrag geändert: 13.10.2008 18:21:06 von xelax90
  5. Hallo,

    schreibe den SQL-Befehl doch mal zuerst eine Variable und gib sie dann aus.

    $sql = "INSERT INTO db_116772_2.book (user ,time ,text)VALUES ('".$un."', '".$time."', '".$entry."');";
    echo $sql;
    mysql_query($sql)


    Damit kannst du den SQL-Befehl auf Fehler überprüfen.
  6. aldistammkunde

    Kostenloser Webspace von aldistammkunde, auf Homepage erstellen warten

    aldistammkunde hat kostenlosen Webspace.


    nein leider funktoiniert keines von beiden


    d.h.? selbiges Problem wie zuvor oder andere 'Symptome'?

    ich schreibe die queries für Inserts von Strings noch ne Nummer umständlicher und glaube, dass es auch so vorgesehen ist.

    Nämlich:

    <?php 
    mysql_query("INSERT INTO tabelle 
                              (spalte1,spalte2,spalte3) 
                 VALUES
                              ('".$sp1_inhalt."','".$sp2_inhalt."','".$sp3_inhalt."')
    ;")or die(mysql_error()); ?>


    Damit wird nämlich später im sql-code jeder einzufügende String noch einmal in einzelne ' gefasst, was afaik der MySQL-Syntax entspricht(bei Zahlen und Mysql-funktionen [wie zB NOW()] setzt man die ' wiederum nicht!).


    Beitrag geändert: 14.10.2008 17:21:15 von aldistammkunde


    Beitrag geändert: 14.10.2008 17:22:08 von aldistammkunde
  7. Autor dieses Themas

    lassidaassi

    lassidaassi hat kostenlosen Webspace.

    nein es kommen keine fehlermeldungen aber in der tabelle werden 2 leere zeilen eingefügt
  8. aldistammkunde

    Kostenloser Webspace von aldistammkunde, auf Homepage erstellen warten

    aldistammkunde hat kostenlosen Webspace.


    nein es kommen keine fehlermeldungen aber in der tabelle werden 2 leere zeilen eingefügt


    und du hast alle hier beschriebenen Änderungsvorschläge ausprobiert? gib doch mal vor dem query die einzufügenden variablen per echo aus, um zu gucken, welchen Inhalt sie haben. Evtl. liegt der Fehler ja auch bereits an anderer Stelle, dass diese Variablen gar keine Werte erhalten. (daher evtl. die Leerzeile?)

    Ist error_reporting(E_ALL); ?

    Hast du evtl. vergessen, einen vorher - testweise - eingesetzten query zu entfernen, der nun jedes mal mit ausgeführt wird? (wg. der ZWEI leerzeilen)
  9. Hast du schon die Werte der Variablen ausgegeben?

    echo $un;
    echo $time;
    echo $entry;

    Wenn die Variablen keinen Wert besitzen, kann auch nichts in die Datenbank geschrieben werden.
  10. Autor dieses Themas

    lassidaassi

    lassidaassi hat kostenlosen Webspace.

    es war ein fehler im formular! entschuldigung aber trotzdem danke für die antworten
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!