MySQL Wert in Tabelle überschreiben (updaten)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • MySQL Wert in Tabelle überschreiben (updaten)

    Hallo erstmal, ;)

    ich habe mir mit googles hilfe einige Vorlagen erarbeitet mit denen ich meine MySQl Datenbank benutzen will um Daten darin abzuspeichern/überschrieben und natürlich auch zu lesen.
    Bisher habe ich der Einfachheit halber immer txt Dateien dafür benutzt, möchte aber ab jetzt etwas Professioneller arbeiten.
    Werte abspeichern und lesen klappt soweit ganz gut, Probleme macht mir das überschreiben:
    Das funktioniert ist aber nicht sicher:

    Quellcode

    1. $sql = "UPDATE `Temps` SET Wert = '+33,33' WHERE Name = 'Temp1'";


    Das soll mich vor SQL Injections schützen enthält aber noch syntax fehler den/die ich nicht finden kann:

    Quellcode

    1. $Wert = '+20,00'; //nur zum testen
    2. $sql = "UPDATE `Temps` SET Wert = VALUES('".mysql_escape_string($Wert)."'); WHERE Name = 'Temp1'"; //Escapen um eine SQL Injection zu verhindern.


    kann mir jemand helfen den/die Fehler zu korrigieren (bin leider nicht so geübt und habe daher öffter mal probleme mit der Syntax aber diesen Fehler finde ich nicht...)

    Hier noch ein paar Zeilen mehr:

    Quellcode

    1. ...
    2. $Wert = '+20,00'; //nur zum testen da die zahlen später aus einer Variable kommen
    3. $sql = "UPDATE `Temps` SET Wert = VALUES('".mysql_escape_string($Wert)."'); WHERE Name = 'Temp1'"; //Escapen um eine SQL Injection zu verhindern.
    4. if (@mysql_query($sql, $link) != false) //an Datenbank senden
    5. {
    6. echo 'Datenbank wurde aktualisiert!';
    7. }
    8. else
    9. {
    10. echo 'Datenbank wurde NICHT aktualisiert!' . mysql_error();
    11. }
    12. @mysql_close($link);
    Alles anzeigen

    bei bedarf gebe ich noch mehr Zeilen raus...

    schon mal Danke für die Hilfe im voraus!

    Ach ja, hier noch die Ausgabe von mysql_error():
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''+20,00'); WHERE Name = 'Temp1'' at line 1

    MfG
    mue.chris
    Alles ist möglich. Unmögliches dauert nur etwas länger!
    Derjenige, der sagt: Das geht nicht, soll den nicht stören, der's gerade tut!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von mue.chris ()

  • Du hattest so vorgeschlagen:

    Quellcode

    1. $sql = "UPDATE `Temps` SET Wert = VALUES('".mysql_escape_string($Wert)."') WHERE Name = 'Temp1'";


    Nein hab es getestet immer noch die selbe Fehlermeldung!


    Edit:
    Aktuell habe ich es jetzt mal so gemacht:

    Quellcode

    1. $sql = "UPDATE `Temps` SET Wert = '".$Wert."' WHERE Name = 'Temp1'";

    mir wäre aber schon wohler dabei wenn es mit escape_string funktionieren würde!

    Bei INSERT INTO funktioniert es ja auch:

    Quellcode

    1. $sql = "INSERT INTO `Temps` (`Name`,`Wert`) VALUES('".mysql_escape_string($Name)."','".mysql_escape_string($Wert)."');";



    Ich denke da gibts eine Lösung bin doch nicht der einzige der per String einen Wert in einer MySQL Tabelle aktuell halten will :D

    MfG
    mue.chris
    Alles ist möglich. Unmögliches dauert nur etwas länger!
    Derjenige, der sagt: Das geht nicht, soll den nicht stören, der's gerade tut!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von mue.chris ()

  • das eigentlich falsche ist doch das VALUES. Nicht das escape_string
    Im übrigen solltest du mysql_real_escape_string verwenden, das achtet gleichzeitig auf den Zeichensatz:

    [phpdoc]mysql_escape_string[/phpdoc]
    Diese Funktion ist identisch zur Funktion mysql_real_escape_string() ausgenommen, dass mysql_real_escape_string() eine Verbindungs-Kennung benötigt und den String entsprechend zum aktuellen Zeichensatz maskiert.
  • Ok, Vielen Dank!!!
    Szabos Vorlage funktioniert! :thumbsup:
    Ich habe jetzt alle meine mysq_escape_string ersetzt durch mysql_real_escape_string (mysq_escape_string hatte ich aus einem Tutorial da wurde empfohlen so vorzugehen :whistling: )


    Jetzt hätte ich allerdings noch ein Problem beim auslesen der Datenbank Tabelle:

    Quellcode

    1. $Inhalt = array();
    2. //alle Felder der Datenbank Tabelle lesen
    3. $sql = "SELECT * FROM `Temps`";
    4. $Ausgabe = mysql_query($sql, $link) or die('Datenbank wurde NICHT gelesen: ' . mysql_error());
    5. while ($Ausgaben = mysql_fetch_array($Ausgabe))
    6. {
    7. echo "$Ausgaben[Name]", "$Ausgaben[Wert]", '<br>';
    8. }
    Ich möchte in der while Schleife statt des echo lieber ein Array füllen. $Inhalt = array(); habe ich oben schon mal vorbereitet... (Vermutlich gibt es dann ein Mehrdimensionales, aber ein Array für die 'Name' Spalte und ein 2.für die 'Wert' Spalte würde auch gehen)
    Ich hätte gerne die Möglichkeit die Werte da auszugeben wo ich will und nicht einfach nur untereinander. Habe es aber bisher nicht geschafft.

    Mfg
    mue.chris
    Alles ist möglich. Unmögliches dauert nur etwas länger!
    Derjenige, der sagt: Das geht nicht, soll den nicht stören, der's gerade tut!
  • Perfekt so wollte ich es haben, vielen Dank!
    Allerdings lasse ich mir den Inhalt von Arrays immer so anzeigen finde ich übersichtlicher: ;)

    Quellcode

    1. echo '<pre><br>Das steht im Array:<br>';
    2. print_r($Array);
    3. echo '</pre><br>';
    Alles ist möglich. Unmögliches dauert nur etwas länger!
    Derjenige, der sagt: Das geht nicht, soll den nicht stören, der's gerade tut!
  • Jupp meine ich ja, bei der Fehlersuche oder um zu sehen wie die Daten im Array aussehen ^^

    um an den gewünschten Wert zu kommen nehme ich dann z.B.

    Quellcode

    1. echo $data[1][Wert];
    usw...

    nochmals Danke!

    MfG
    mue.chris
    Alles ist möglich. Unmögliches dauert nur etwas länger!
    Derjenige, der sagt: Das geht nicht, soll den nicht stören, der's gerade tut!