Wo steckt der Fehler? (bin ich blind?)
wucher wichtel
- datenbank
Hallo!
Ich habe gerade ein Problem mit einer eigentlich einfachen Abfrage. Aber irgendwo steckt angeblich ein Fehler, und ich sehe ihn nicht. Hier der Quelltext:
echo "<p>".$_POST['titel']."</p>";
$sql = 'INSERT INTO blogentry
(inhalt)
VALUES
("'.$_POST["inhalt"].'")
WHERE
titel = "'.$_POST["titel"].'"';
mysql_query($sql) OR die(mysql_error());
Dabei kommt dann folgendes heraus:
##################################
XSS
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE titel = "XSS"' at line 5
##################################
Also stimmt der Wert für titel (XSS). Aber es kommt trotzdem eine Fehlermeldung, obwohl auch die Verschachtelung der Anführungszeichen eigentlich stimmen, oder? Oder mache ich etwas anderes falsch?
ciao, ww
Hello,
Ich habe gerade ein Problem mit einer eigentlich einfachen Abfrage. Aber irgendwo steckt angeblich ein Fehler, und ich sehe ihn nicht. Hier der Quelltext:
[code]
echo "<p>".$_POST['titel']."</p>";$sql = 'INSERT INTO blogentry
(inhalt)
VALUES
("'.$_POST["inhalt"].'")
WHERE
titel = "'.$_POST["titel"].'"';
echo $sql;
mysql_query($sql) OR die(mysql_error());
Das sollte weiterhelfen.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo!
Danke für deine Antwort.
echo $sql;
Das sollte weiterhelfen.
Ich poste mal das Ergebnis:
##########################
XSS
INSERT INTO blogentry (inhalt) VALUES ("ganz viel Inhalt") WHERE titel = "XSS"
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE titel = "XSS"' at line 5
##########################
Ich kann leider immer noch keinen Fehler entdecken!?
ciao, ww
Hi wucher!
Also stimmt der Wert für titel (XSS). Aber es kommt trotzdem eine Fehlermeldung, obwohl auch die Verschachtelung der Anführungszeichen eigentlich stimmen, oder?
Die Verschachtelung ist richtig. Allerdings solltest du bei Strings in SQL-Abfragen immer Singlequotes nehmen ("'"):
... WHERE titel = '"
.$_POST["titel"].
"'
";
Mehr dazu kannst du MySQL-Referenzhandbuch unter Strings nachlesen.
Oder mache ich etwas anderes falsch?
Ja. Dein Script ist anfällig für SQL-Injektion.
Mehr dazu findest du auch im gleichnamigen Artikel von php.net: SQL-Injektion
MfG H☼psel
Hallo!
Oder mache ich etwas anderes falsch?
Ja. Dein Script ist anfällig für SQL-Injektion.
Mehr dazu findest du auch im gleichnamigen Artikel von php.net: SQL-Injektion
Danke! Werde ich mir durchlesen :)
ciao, ww
Tach.
$sql = 'INSERT INTO blogentry
(inhalt)
VALUES
("'.$_POST["inhalt"].'")
WHERE
titel = "'.$_POST["titel"].'"';
Was soll denn INSERT INTO ... WHERE ... bewirken? Entweder fügst du etwas neu in die Datenbank ein oder aktualisierst mit UPDATE einen bestehenden Datensatz.
--
Once is a mistake, twice is jazz.
Hallo!
Was soll denn INSERT INTO ... WHERE ... bewirken? Entweder fügst du etwas neu in die Datenbank ein oder aktualisierst mit UPDATE einen bestehenden Datensatz.
Ok. Danke an euch 4! UPDATE kannte ich noch nicht. Danke schön!
ciao, ww
Hallo,
$sql = 'INSERT INTO blogentry
(inhalt)
VALUES
("'.$_POST["inhalt"].'")
WHERE
titel = "'.$_POST["titel"].'"';
Hm, gibt es INSERT INTO ... WHERE ...? Füge einen Datensatz ein, aber nur wenn bei dem das Feld titel = "XSS" ist? Kommt Dir das logisch vor ;-)? Setzt Du nicht den Inhalt des Feldes titel beim Einfügen erst?
Meinst Du vielleicht UPDATE?
viele Grüße
Axel