Wo liegt der Fehler
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
befehl
code
dank
eintrag
entfernen
falsch mache
fehler
fehlermeldung
folgendes code
leere zeile
leere zeilen
nummer
problem
sonderzeichen
string
tabelle
text
variablen ausgegeben code
wert besitzen
zahl
-
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! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
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 -
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. -
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 -
nein es kommen keine fehlermeldungen aber in der tabelle werden 2 leere zeilen eingefügt
-
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) -
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.
-
es war ein fehler im formular! entschuldigung aber trotzdem danke für die antworten
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage