Keine Reaktion durch UPDATE einer Tabellenzelle (MySQL)

Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!

Zu der Infoseite von „Die Mo-Mo-Manie“
  • Hallo nochmal!


    Diesmal eine andere Frage, zunächst jedoch die Situationsbeschreibung:


    In der Datei "blog_bearbeiten.php" übergebe ich per Formular folgende Werte an "blog_neu.php":
    - id
    - Titel
    - Datum
    - Uhrzeit
    - Text, welche auch meinen 5 Spalten der Tabelle "Blog" entsprechen.


    Nun der Auszug aus "blog_neu.php":



    Als Ausgabe erfolgt auch immer der neue Titel, hurra... Jedoch wird der effektiv nicht in der Datenbank gespeichert (ergibt meine Kontrolle via phpmyadmin).
    Wo könnte da der Knicks liegen? Ich bin besonders ratlos, da über echo sogar der richtige neue Wert ausgegeben wird...

  • Wie sieht die Abfrage (der Inhalt von $aendern) zum Zeitpunkt des Aufrufes von mysql_query() aus? Was passiert, wenn du diese Abfrage direkt in phpmyadmin ausführst? Und, wie schon im anderen Thread gesagt: Wie sieht deine Datenbankstruktur aus?


    Btw.: Du solltest Abfragen nicht einfach so selbst zusammen bauen. Verwende stattdessen parametrisierte Abfragen.

  • Ich versuche mal, alles gut zu beantworten:


    Meine Datenbankstruktur ist Folgende: Name der Tabelle ist "Blog". Sie enthält 5 Spalten in der Reihenfolge: id, Titel, Datum, Uhrzeit, Text.


    Ich verstehe nicht ganz die Frage (liegt aber daran, dass ich noch nicht so gut drin bin). Meinst du die genauen Werte von $titel etc?


    Wenn ich die Änderung (also die UPDATE-Funktion) in phpmyadmin ausführe klappt es...


    EDIT: Auch dieses Problem hat sich geklärt. Auf dumme Art und Weise wurde die id nicht mitgegeben, entsprechend wurde der Rest zwar korrekt angezeigt, jedoch nicht geändert.
    Danke dennoch! :-)

  • Noch ein Sicherheitshinweis: Wenn du Werte direkt in die SQL schreiben lässt, ohne vorher den Inhalt zu prüfen/maskieren kann man deine SQL manipulieren (s. z.b. Hackademy #5 - SQL-Injection)


    Ein guter Anfang wäre es mit den Funktion mysql_real_escape_string() und trim() :


    Code
    //Datenbankverbindung$id = mysql_real_escape_string(trim($_POST['id']));$titel = mysql_real_escape_string(trim($_POST['Titel']));$datum = mysql_real_escape_string(trim($_POST['Datum']));$uhrzeit = mysql_real_escape_string(trim($_POST['Uhrzeit']));$text = mysql_real_escape_string(trim($_POST['Text']));$aendern = "update Blog setTitel = '$titel' where id = '$id'";$update = mysql_query($aendern);if($update == true)	{	echo "Neuer Titel: $titel <br>";	}//restliche Änderungen, analog zu Titel


    Es gibt bestimmt auch noch andere Methoden ;)




    Und noch ein kleiner Tipp:
    du kannst die Werte $datum und $uhrzeit auch zusammenlegen, indem du den Zeitstempel (time()) speicherst.
    Beim auslesen kannst du dann die Funktion date() benutzen


    Code
    // Zeitausgabe
    
    
    echo "Datum: ".date("d.m.Y", Zeit);
    echo "Uhrzeit: ".date("H:i:s", Zeit);