pankraz: update

Hallo zusammen,

Hab ein kleines Problem, kann sich mal jemand das folgende script anschauen und sagen ob er den Fehler sieht. Den es erfolgt leider kein Bearbeitung des Datensatzes.

  
<?php  
if(isset($_POST[datum1]))  
{  
mysql_connect("server","benutzer","pw");  
mysql_select_db("datenbank");  
mysql_query("UPDATE form SET titel='$_POST[titel]', text='$_POST[text]', autor='$_POST[autor]', datum='$_POST[datum]', datum1='$_POST[datum1]' WHERE datum1='$_POST[datum1]'");  
}  
?>  

Vielen Dank

  1. Hello,

    mysql_query("UPDATE form SET titel='$_POST[titel]', text='$_POST[text]', autor='$_POST[autor]', datum='$_POST[datum]', datum1='$_POST[datum1]' WHERE datum1='$_POST[datum1]'");

    Was steht denn in mysql_error()?
    Vermutlich "Sie haben einen Fehler in Ihrem SQL-Statement in der Nähe von form" ...
    mals so frei übersetzt...

    Frag nach einem Statement immer mysql_errno($connection) ab, ob es gleich 0 ist, sonst war ein Fehler in der Abfrage.

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

    1. Hallo

      Was steht denn in mysql_error()?

      Hmm. wo find ich den..? :d

      Frag nach einem Statement immer mysql_errno($connection) ab, ob es gleich 0 ist, sonst war ein Fehler in der Abfrage.

      Lg

    2. Hallo

      Was steht denn in mysql_error()?

      Hmm wo find ich den..?

      Lg

      1. Hello,

        Was steht denn in mysql_error()?

        Hmm wo find ich den..?

        Dort, woher Du mysql_query() auch hast, vom Server unter der derselben Connection.

        Eine Beschreibung findest Du hier:
        http://de3.php.net/manual/de/function.mysql-error.php

        Harzliche Grüße vom Berg
        http://bergpost.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

        1. Hallo,

          Also wenn ich es so mache dann kommt 0 heraus. Was kann ich nun daraus schliessen.?

          Vielen Dank

          1. Hello,

            Also wenn ich es so mache dann kommt 0 heraus. Was kann ich nun daraus schliessen.?

            Das Du den Fehler gefunden hast und er nun beseitigt ist.

            Das war Dei  Statement:

            UPDATE form                     ;; <-- 2 Fehler
            SET
              titel='$_POST[titel]',
              text='$_POST[text]',
              autor='$_POST[autor]',
              datum='$_POST[datum]',
              datum1='$_POST[datum1]'
            WHERE
              datum1='$_POST[datum1]'

            Ich habe darin auf Anhieb zwei Fehler entdeckt.

            Außerdem steckt eine Unsicherheit bezüglich der Variablen drin, auf die ich mich nicht einlassen würde.

            Die Elementebezeichner der Arrays würde ich, auch wenn es so funktioniert, nicht ohne Häkchen benutzen. Wenn man dieselbe Variable dann nämlich in einen anderen Kontext setzt, was hier notwenid ist, dann kann es zur Verwechslung nit Konstanten kommen.

            Eine dicke fette Sicherheitslücke ist außerdem drin.
            Leider warnt einen mysql_error() davor nicht.

            Lies Dir dazu mal bei Wikipedia das Kapitel über SQL-Injection durch
            http://de.wikipedia.org/wiki/SQL_Injection
            Und bei PHP gibt es auch eins:
            http://de3.php.net/manual/de/security.database.sql-injection.php

            §sql="
            UPDATE form                     ;; <-- noch 2 Fehler
            SET
              titel='".mysql_real_escape_string($_POST['titel'],$con)."',
              text='".mysql_real_escape_string$_POST['text'],$con)."',
              autor='".mysql_real_escape_string$_POST['autor'],$con)."',
              datum='".mysql_real_escape_string$_POST['datum'],$con)."',
              datum1='".mysql_real_escape_string$_POST['datum1'],$con)."'
            WHERE
              datum1='".mysql_real_escape_string$_POST['datum1'],$con)."'";

            $res = mysql_query($sql, $con(;
            if ($mysql_errno($con) > 0)
            {
              ## Fehlerbehandlung
              ## $mysql_error($con) enthält jetzt die Fehlerbeschreibung
            }
            else
            {
              ## weitermachen

            }

            Harzliche Grüße vom Berg
            http://bergpost.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)