Updateproblem!

lordofscotland

Erfahrenes Mitglied
Hallo Community,

ich hab mich hier durch die SuFu gequält und trotzdem nicht das passende gefunden.

Folgendes Problem, ich hab einen Adminbereich wo Daten aus einer MySQL-DB kommen, diese werden in ein Formular geladen so das man diese dann auch bearbeiten oder verändern kann.

Das dazugehörige Updatescript zeigt mir an das die Werte richtig übergeben wurden, nur in der DB wurde nichts geändert.

Script:
PHP:
mysql_query('UPDATE mec_content SET head = '.$head.', texte = '.$texte.', text = '.$text.' WHERE tid = '.$id.'');
   print"Datensatz wurde erfolgreich ge&auml;ndert!<br>
   head =$head<br>
   texte=$texte<br>
   text2=$text2";?></p>

Ich hab das ganze auch vorher mit
PHP:
$_POST[head]
etc. versucht, es wird immer angezeigt welche Daten gesendet werden und auch das dass ganze erfolgreich war.

Wo liegt mein Gedankenfehler?

Danke im vorraus!
 
Versuche dein Query mal wie folgt aufzubauen:
PHP:
$sql = '
  UPDATE
    `mec_content`
  SET
    `head` = "%s",
    `texte` = "%s",
    `text` = "%s"
  WHERE
    `tid` = %u
';

mysql_query(sprintf($sql, $head, $texte, $text, $id)) or die(mysql_error());
Wenn dein Query falsch sein sollte, müsste dir das Skript nun einen Fehler anzeigen und dann abbrechen.
 
Hab mich gerade nochmal an das Problem rangesetzt, und siehe da mit dem hier
PHP:
mysql_query("UPDATE mec_content SET head = '$_POST[head]', texte = '$_POST[texte]', text2 = '$_POST[text2]' WHERE tid = '$_POST[id]'");

Klappt es plötzlich, hab auch gesehen das einige Namen nicht richtig waren, habe das alos korrigiert und nun klappt es.

Trotzalle dem Danke an euch ;)
 
Nun saftmeister, so ganz ist das nicht das was ich dachte, ein Rätsel soll mir bei der Lösung eines Problems helfen.
Glaub ich weniger, wenn dann würde ich mich freuen wenn du mir zeigst was du meinst.

LG
 
Wieso Rätsel? Ich will damit lediglich andeuten, das dein Code anfällig gegen diverse Attacken ist, so wie du ihn momentan stehen hast.

Du müsstest schon die Links anklicken und den dahinter liegenden Text lesen, um zu verstehen, was ich genau meine.

Oder anders gesagt: Variablen direkt vom Browser ohne Filterung und Validierung an ein SQL-Statement zu übergeben, bei dem bekanntermaßen weder gefilter noch validiert wird, ist hochgratig leichtsinnig und häufig Einfallstor für Webseiten-Defacements oder schlimmeres.
 
Immer die pösen Hacker....

Achja, schreib mal ein error_reporting(E_ALL); an den Anfang. Dann wirst du die Fehler von ganz alleine korrigieren wollen. Wahrscheinlich weil du erstmal ewigkeiten Scrollen musst bis du nach den ganzen Warnings den eigentlichen Output siehst :p
 
Manchmal reicht das error_reporting alleine nicht. Bei Webhostern ist in der Regel das display_errors auf Off. Daher sollte man schon auf dem Entwicklungs- und Test-Server immer

PHP:
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);

in die ersten Zeilen des Scripts schreiben.
 
Zurück