UPDATE funktioniert nicht

Voltex

Mitglied
Hallo,
ich versuch nun schon seit stunden diese SQL Anweisung zum laufen zu bekommen aber es tut sich nichts...

Zum problem: Ich hab einen WYSIWYG Editor auf meine Seite eingebaut. Wir auch alles was eingegeben wurde schön in Variablen abgespeichert und so weiter. Wenn ich das dann auf der nächsten Seite ausgeben lassen will wird das auch so gemacht.

Wenn ich dann aber den Inhalt der Variable in die Datenbank schreiben will tut sich rein garnichts. Ich weis echt nicht worans liegt. Ich hoffe ihr könnt mir helfen...

hier der Quellcode:

PHP:
 if ( isset( $_POST ) )
        $postArray = $_POST ;

      foreach ( $postArray as $sForm => $value )
      {
	       if ( get_magic_quotes_gpc() )
		      $postedValue = htmlspecialchars( stripslashes( $value ) ) ;
	       else
		      $postedValue = htmlspecialchars( $value ) ;


         echo $postedValue;
         
          var_dump($postedValue); 
         
         $change = "UPDATE tbl_site_main SET data = '".$postedValue."' WHERE title = 'impres'";
         
         mysql_query($change, $link) or die('Mysql error: '.mysql_error());
 
Ich hab das ganze jetz mal ein wenig umgemodelt. die SQÖ Anweisung sieht nun so aus:

PHP:
$change = "UPDATE tbl_site_main SET data = `$postedValue` WHERE title LIKE 'impres'";

und nun wird mir folgender fehler ausgegeben:
<p>test</p>string(23) "<p>test</p>" Mysql error: Unknown column '<p>test</p>' in 'field list'


weiss jemand was da los ist?
 
Du maskierst deinen String falsch.

PHP:
change = "UPDATE tbl_site_main SET data = `$postedValue` WHERE title LIKE 'impres'";

Auf diese Weise deklarierst du $postedValue als Feld, nicht als Variable. Einfache Anführungszeichen sind das was du suchst:

PHP:
change = "UPDATE tbl_site_main SET data = '$postedValue' WHERE title LIKE 'impres'";
 
Soweit, sogut, jetz überschreibt er mir wenigstens den Inhalt in dem besagtem Feld. Was jetz noch seltsam ist, dass der den "neuen" Inhalt garnicht eingibt. also der Vorhandene Inhalt wird gelöscht und kein neuer Reingeschrieben. Das Feld bleibt also leer, so als wäre in der Variable nichts gespeichert.

Nachtrag: In der Variable ist definitiv Inhalt vorhanden. Bei der Ausgabe wird mir dieser ja angezeigt. Es scheitert also am in-die-Datenbank-schreiben
 
Zuletzt bearbeitet:
Dann versuchen wir es mal auf eine schönere Weise:

PHP:
$change = "UPDATE 
    `tbl_site_main` 
    SET 
      `data` = '".mysql_real_escape_string($postedValue)."' 
    WHERE 
      `title` = 'impres'";
echo $change;         
mysql_query($change, $link) or die('Mysql error: '.mysql_error());

Übersichtlicher und richtig maskiert.
Sieht die Ausgabe von $change richtig aus?
 
Also die Ausgabe von $change sieht korrekt aus

UPDATE `tbl_site_main` SET `data` = '<p>test</p>' WHERE `title` = 'impres'UPDATE `tbl_site_main` SET `data` = '' WHERE `title` = 'impres'

wobei
<p>test<p>
den Inhalt der Variable $postedValue wiedergibt. Leider wird das nicht in die datenbank übernommen. Sprich der ursprungsinhalt wird zwar gelöscht, der neue aber nicht übernommen
 
Die Ausgabe ist aber zwei mal vorhanden und da sehe ich auch, dass du es in einer Schleife aufrufst. Du solltest eine Prüfung einbauen, die prüft ob in $postedValue überhaupt etwas vorhanden ist.
 
Ich glaube ich hab einen möglichen Fehler gefunden. Aber noch keine Lösung^^

Das Problem liegt wohl darin, dass der "Absenden" Knopf von mir nen Namen verpasst bekommen hat und der dann immer während der Schleife geleert wurde und der anstatt den Inhalt des editors den leeren Namen eingetragen hat... so siehts jedenfalls aus... Is auch ziemlich Wirsch^^ jetz klappts jedenfalls ;)

als dann, danke für die Hilfe, falls weitere Probleme auftauchen, sag ich bescheidt ;)
 
Zurück