Daten in Datenbank schreiben geht nicht
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
aufruf
code
datenbank
datum
eden
eintrag
eintragen
fehler
gesamter code
problem
projekt
richtigen zeichen
rufen
sache
session
string
tabelle
text
zeile
-
Hi
ich habe volgendes Problem,
undzwar will ich daten in meine datenbank schreiben
habe das script von meinem PN-System kopiert und so zurechtgemacht das es jetzt für mein Gb eigendlich gehen sollte
also nur Betreff raus und namen der Datenbank geändert.
Aber er schreibt die daten nicht in die DB
Seht ihr warum es nicht geht?
Hier mal der Code
<? include \"config.php\"; $from_id = $_SESSION[id]; $from_user = $_GET[from_user]; $to_id = $_GET[to_id]; $to_user = $_GET[to_user]; $text = $_GET[text]; $timestamp = $_GET[datum]; $eintrag = \"INSERT INTO gbuch (from_id, from_user, to_id, to_user, text, timestamp) VALUES (\'$from_id\', \'$from_user\', \'$to_id\', \'$to_user\', \'$text\', \'$timestamp\')\"; $eintragen = mysql_query($eintrag); ?> <a href=\"userlist.php\">Zurück zur Memberliste.</a>
MfG
The-Eden
EDIT:
er gibt kein fehler aus
sondern es kommt halt nur \"Zurück zur Memberliste\" und das wars.
Beitrag geändert: 29.2.2008 19:45:49 von the-eden-projekt -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Gefährlich, du übernimmst Nutzereingaben direkt in den Query, das ist eine GROßE Sichterheitslücke: http://de.wikipedia.org/wiki/SQL_Injection
Ersetze z.b.
$from_user = $_GET[from_user];
durch
$from_user = mysql_real_escape_string($_GET[\'from_user\']);
Edit: Zu deinem Problem, rufe nach mysql_query noch folgendes auf:
echo mysql_error();
Wenn das etwas ausgibt, siehst du meistens deinen Fehler.
Beitrag geändert: 29.2.2008 19:49:34 von xhochy -
Damit meint er, dass man, wenn man bei den Eingaben die richtigen Zeichen verwendet, man SQL Befehle in den Query schmuggeln und so z.B. die Datenbank manipulieren oder auslesen kann.
-
Ja, es ist egal wer eintragen kann, solange es nicht du selbst bist können die deinen Query mutwillig verändern, so dass sie z.B. die ganze Tabelle löschen, les dir mal die Wikipedia-Seite durch, solltest wissen, was es ist, ist eine Sache die sehr häufig falsch gemacht wird und sehr viele Sicherheitslücken hervorruft.
-
axo
ja hab eben den link erst gesehen und mal angefangen zu lesen ;(
ist ja echt ne blöde sache
also muss ich jetzt um dei lücke zu schließen dort überall dieses real once zumachen
hab ich das richtig verstanden ??? -
Genau!
-
ja geht noch
nur er schreibt die immernoch nicht in die DB ;( -
<? include \"config.php\"; include \"session.php\"; $subject = mysql_real_escape_string($_GET[\"subject\"]); $from_id = mysql_real_escape_string($_SESSION[\"id\"]); $from_user = mysql_real_escape_string($_GET[\"from_user\"]); $to_id = mysql_real_escape_string($_GET[\"to_id\"]); $to_user = mysql_real_escape_string($_GET[\"to_user\"]); $text = mysql_real_escape_string($_GET[\"text\"]); $timestamp = mysql_real_escape_string($datum); $eintrag = \"INSERT INTO pns (subject, from_id, from_user, to_id, to_user, text, timestamp) VALUES (\'$subject\', \'$from_id\', \'$from_user\', \'$to_id\', \'$to_user\', \'$text\', \'$timestamp\')\"; $eintragen = mysql_query($eintrag); echo $eintrag; var_dump($eintragen); ?> <a href=\"mail_in.php\">Weiter</a>
das ist er also direkt nach dem query aber kommt nix ;( -
Also wenn nichts kommt, heißt das, dass der Code überhaupt nicht aufgerufen wird...
-
ah jetzt doch
INSERT INTO gbuch (from_id, from_user, to_id, to_user, text, timestamp) VALUES (\'1\', \'Atze\', \'1\', \'Atze\', \'rrrr\', \'\')bool(false)
hatte vvergessen zu speichern -.-
Beitrag geändert: 29.2.2008 22:40:45 von the-eden-projekt -
Ist das dein gesamter Code, oder hast du zuvor noch eine if-Abfrage?
Nutze mal \'<?php\' statt \'<?\'
EDIT: Na, dann ist gut^^
Beitrag geändert: 29.2.2008 22:42:31 von xhochy -
ja habe davor ne if abfrage
also frage ob der user eingelogt ist also ob die session da ist -
ne mit <?php gehts auchnicht
-
the-eden-projekt schrieb:
INSERT INTO gbuch (from_id, from_user, to_id, to_user, text, timestamp) VALUES (\\\'1\\\', \\\'Atze\\\', \\\'1\\\', \\\'Atze\\\', \\\'rrrr\\\', \\\'\\\')bool(false)
Das bool(false) am sagt schon mal das die Anfrage daneben geht.
Häng einfach noch ma ein var_dump(mysql_error()) dran... -
INSERT INTO gbuch (from_id, from_user, to_id, to_user, text, timestamp) VALUES (\'1\', \'Atze\', \'1\', \'Atze\', \'test\', \'\')bool(false) string(42) \"Unknown column \'timestamp\' in \'field list\'\"
hmpf so wie ich das jetzt sehe denke ich mal das timestamp falsch ist ;( werde das mal rausnehmen und guggen was er dann macht ;/ -
Es sieht so aus, als hätte deine Tabelle einfach keine Spalte timestamp, füg die einfach per PHPMyAdmin hinzu, dann gehts auch mit Timestamp.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage