Mich plagt seit einiger Zeit ein von mir eben erstelltest Script zum akzualisieren/ändern von News.
Wie ihr euch vorstellen könnt, funktioniert es nicht richtig.
So sieht es aus.
Jetzt das komische. Wenn ich vor dem Query ein Echo "$titel $message $id"; schreibe, so werden die korrekten Werte angezeigt.
Und wenn ich anstatt den Variablen, die ich eintragen will einen festen Wert eingebe, so wird dieser auch eingetragen.
Also liegt es wohl daran, dass er Variablen nicht eintragen will.
Aber erstens, sollte das doch funktionieren und zweitens haben die Variablen doch den korrekten Wert.
Außerdem wird seltsamerweise immer "Änderung erfolgreich!" angezeigt.
Ich sehe hier auf den ersten Blick einen gravierenden Fehler: Wenn du hier einen Titel, Eintrag, oder wasweissichwas zusendest und der Text z.B. ein ' enthaelt wird garantiert kein Eintrag gesetzt. Du musst die Strings erst passend escapen: mysql_escape_string($_POST["name"]), etc.
Der Fehler liegt wohl eher daran, dass du $aendern abfragst, das enthält aber immer den String mit der Query und ist von daher immer true. Du müsstest schon $update abfragen.
Ansonsten könntest du dir im Fehlerfall mit mysql_error() den Feheler ausgeben lassen.
(Und das == true brauchst du nicht, das kannst du auch einfach weglassen )
Ansonsten würde ich dir empfehlen, die id durch intval() zu jagen und die beiden Strings mit mysql_real_escape_string() zu escapen, um SQL Injections vorzubeugen.
@ Jay
Welchen Sinn hat es, wenn das Feld id heisst, da ID ohne `` hinzuschreiben? Darin besteht wohl kaum der Fehler.
Jain. Wenn die Tabellenstruktur mit Wörtern in kleinbuchstaben geschrieben wurde, sollte man auch id und nicht ID schreiben. Meines Wissens nach macht MySQL auch keine selbstständige ID Spalten Hinzufügung.
`` sind außerdem dann sinnvoll, wenn ein Spaltenname mit einem MySQL Schlüsselwort identisch ist, z.B. ALTER.
Noch ein Hinweis zum escapen: Wenn magic_quotes_gpc auf true gesetzt ist wäre ein stripslashes() vor mysql_real_escape_string() angesagt, da sonnst auch irrelevante \ im String enthalten blieben.