textarea Formulardaten in MySQL Datenbank schreiben
Dennis123
- php
Hallo Leute,
ich habe ein kleines Problem, das mir irgendwie recht simpel erscheint, aber welches ich einfach nicht gelöst bekomme. Ich hab schon Google durchstöbert, sowie auch dieses Forum und das Problem ist an sich kein einzigartiges, aber auch die anderen Fälle und Tutorials konnten mir irgendwie nicht weiterhelfen...
Also, ich versuche die Daten aus einer textarea in eine MySQL DB zu schreiben. Ich habe bereits die Übergabe per "post" in eine zweite .php Datei hinbekommen, sprich wenn ich den Inhalt der textarea per echo ausgebe, sehe ich genau das, was in die DB reingeschrieben werden soll. Außerdem funktioniert bereits die Verbindung zur Datenbank. Hier mal der Code der zweiten Datei:
<?
mysql_select_db( MYSQL_DATENBANK )
or die("Verbindung zur Datenbank fehlgeschlagen.");
$xhtml = $_POST['editor'];
echo $xhtml;
?>
Könnt ihr mir sagen, was ich nun statt des echos schreiben muss, damit der Inhalt in der Datenbank gespeichert wird?
Ich habe eine Tabelle namens "startseite" mit einer Zeile (oder Spalte?) namens "xhtml" in die alles reingeschrieben werden soll.
Beste Grüße
Könnt ihr mir sagen, was ich nun statt des echos schreiben muss, damit der Inhalt in der Datenbank gespeichert wird?
Hast du schon mal die PHP-Dokumentation zu mysql_select_db ansehen - da gibts weiterführende Informationen - etwa einen verweis auf mysql_query() wo dann auch ein paar einfache Beispiele zu finden sind.
Ich habe eine Tabelle namens "startseite" mit einer Zeile (oder Spalte?) namens "xhtml" in die alles reingeschrieben werden soll.
Tabellen haben Felder (Spalten) und Datensätze (Zeilen). Wenn es benannt ist, sind es idR. Felder.
Nachdem dir scheinbar noch einiges an Grundlagenwissen fehlt, solltest du dich ggf. mal durch ein einfaches Tutorial arbeiten:
http://tut.php-quake.net/de/ ist empfehlenswert.
ah jo, habs nun doch hinbekommen. War bereits in dem Tut unterwegs, aber hatte wohl nen kleinen Fehler eingebaut gehabt.
Für nachfolgende Generationen, meine Lösung sieht wie folgt aus:
$sql = "
INSERT INTO `startseite`
(
`xhtml`
)
VALUES
(
'$xhtml'
);
";
$db_erg = mysql_query($sql)
or die("Anfrage fehlgeschlagen: " . mysql_error());
Hi!
Für nachfolgende Generationen, meine Lösung sieht wie folgt aus:
Nachfolgende Generationen sollten auch mysqli und Prepared Statements ansehen.
$sql = "
INSERT INTOstartseite
(
xhtml
)
VALUES
(
'$xhtml'
);
";
Das jedenfalls ist fehlerhaft, weil der Kontextwechsel nicht beachtet wurde.
Lo!
Moin!
Das jedenfalls ist fehlerhaft, weil der Kontextwechsel nicht beachtet wurde.
Fehlerhaft ja- aber warum schreibst Du nicht, dass es GEFÄHRLICH ist?
Biete auch die Lösung an:
$sql = 'INSERT INTO `startseite` (`xhtml`) VALUES ('".[link:http://php.net/manual/de/function.mysql-real-escape-string.php@title=mysql_real_escape_string]($_POST['editor']).'")';
oder mein Liebling:
$sql = '
INSERT INTO `startseite`
SET `xhtml` = '".[link:http://php.net/manual/de/function.mysql-real-escape-string.php@title=mysql_real_escape_string]($_POST['editor']).'"';
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
Hi!
Das jedenfalls ist fehlerhaft, weil der Kontextwechsel nicht beachtet wurde.
Fehlerhaft ja- aber warum schreibst Du nicht, dass es GEFÄHRLICH ist?
Biete auch die Lösung an:
Steht doch alles im verlinkten Artikel, sowohl das Problem als auch warum es wichtig ist. Deswegen hab ich ihn ja geschrieben, weil das nach wie vor ein immer wieder gemachter Fehler ist. Und es steht nicht nur eine Lösung drin, sondern auch die besser lesbare Variante mit sprintf() und auch Prepared Statements werden erwähnt.
Lo!
Moin!
Hi!
Das jedenfalls ist fehlerhaft, weil der Kontextwechsel nicht beachtet wurde.
Fehlerhaft ja- aber warum schreibst Du nicht, dass es GEFÄHRLICH ist?
Biete auch die Lösung an:Steht doch alles im verlinkten Artikel,
Das Problem bei der Äußerung "fehlerhaft" ist, dass der Proband vor seiner zunächst einmal (offenbar) funktionierenden "Lösung" sitzt und sich seinen Teil selbst denkt - dabei zu Schlüssen kommt die Dir sicher nicht gefallen. Ob er dann auf der verlinkten Seite nachliest steht in den Sternen, notwendig wird es ihm nicht erscheinen.
Das Wort "gefährlich" zeigt ihm auf, dass seine Handlungsweise zu Ergebnissen führen kann, die ihm wieder nicht gefallen. Damit steigt die Wahrscheinlichkeit, dass er dem Link folgt. Schreib doch nicht immer nur "Du beachtest den Kontextwechsel nicht", sondern: "Du musst da aber noch was tun um in der Webseite keine Sicherheitslöcher aufzureißen: Beachte den Kontextwechsel."
Lo!
Lo^2
fastix