1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

PHP / MYSQL Update fehler

Dieses Thema im Forum "PHP & Co." wurde erstellt von Oxy, 15.03.07.

  1. Oxy

    Oxy Antonowka

    Dabei seit:
    15.03.07
    Beiträge:
    363
    Hallo ich habe ein "kleines" Problem bei meinem Update Befehl , wenn ich in den Update befehl ein Query OHNE Variable
    (UPDATE `baeder` SET `aufgaben` = 'OHNEVARI' WHERE bad ='Vreden' and aufgaben=''Keine";)
    absetze ändert er meine Datenbank , allerdings wenn ich das Query
    (UPDATE `baeder` SET `aufgaben` = '".$_POST['aufin']."' WHERE bad ='Vreden' and aufgaben=''";)
    absetze Ändert er meine Daten nicht ich habe die Vermutung das in " .$_POST['aufin']. " kein wert eingefügt wird , weil wenn ich Dies vor dem Query ausgeben will erscheint nix ... Irgendwie ist meine If abfrage nicht korrekt oder meine eingabe ... ich habe keine Ahnung was da nicht stimmt
    Bitte um Hilfe
    Source :
    <html>
    <head><title>Datenbank</title>
    </head>
    <body>
    <?php
    echo "<pre>".print_r($_POST)."</pre>";
    error_reporting(E_ALL);
    include("config.php");

    $con=@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
    echo "
    <form method='post'>
    <input type='radio' name='methode' value='bad'>BaederInfo<br>
    <input type='radio' name='methode' value='aufg'>Aufgaben<br>
    <input type='radio' name='methode' value='both'>Beides<br>
    <input type='submit' name='submit' value='Senden'>
    </form>";

    switch($_POST['methode']){
    case "aufg":
    echo "
    <form method='post'>
    zu aendernde Daten eingeben<br>
    <input type='text' name='aufin'>: Aufgabe <br>
    <input type='submit' name='submit2' value='Abschicken'>
    </form>";



    if($_POST['submit2']="Abschicken"){
    $sql = "UPDATE `baeder` SET `aufgaben` = '".$_POST['aufin']."' WHERE bad ='Vreden' and aufgaben=''";
    echo "UPDATE `baeder` SET `aufgaben` = '$aufin' WHERE bad ='Vreden' and aufgaben=''";
    $result=mysql_query($sql,$con);
    echo "Daten wurden geaendert";
    }else{ echo "Daten wurden nicht geändert";}
    }

    ?>
    <br>
    <a href=mySql.php>zur Auswahl</a><br>
    <a href=ausgabe.php>zur Ausgabe</a><br>
    </body>
    </html>

    Mfg -Oxy-
     
  2. LaForce

    LaForce Transparent von Croncels

    Dabei seit:
    18.01.06
    Beiträge:
    309
    Ich würde mal vermuten, dass wenn Du die Sache nochmal LESBAR postest, Du auch ne Antwort bekommst.... ;)
     
  3. duderino

    duderino Goldparmäne

    Dabei seit:
    26.01.06
    Beiträge:
    556
    Poste doch einfach das reine Query.
    Dann kann ich da mal drüber schauen...
     
  4. Oxy

    Oxy Antonowka

    Dabei seit:
    15.03.07
    Beiträge:
    363
    Das Query an sich klapptja ^^ aber er übernimmt die Variable nicht in das Query und dann führt er den Query falsh aus aber der query ist
    "UPDATE `baeder` SET `aufgaben` = '".$_POST['aufin']."' WHERE bad ='Vreden' and aufgaben=''";
     
  5. theangel

    theangel Bismarckapfel

    Dabei seit:
    19.06.05
    Beiträge:
    141
    Code:
    "UPDATE baeder SET aufgaben = '".$_POST['aufin']."' WHERE bad = 'Vreden' AND aufgaben = ''";
    Wenn die Variabel wirklich per Post übergeben wird und aufin heisst, müsste das so eigentlich funktionieren.
     
  6. Oxy

    Oxy Antonowka

    Dabei seit:
    15.03.07
    Beiträge:
    363
    ich habeja eine Abfrage oben mit den radiobutons und wenn ich da Baeder auswähle führt er gleich den Query aus
     
  7. Oxy

    Oxy Antonowka

    Dabei seit:
    15.03.07
    Beiträge:
    363
    habe 2 fehler gefunden habe eine zuweisung gemacht anstatt ein vergleich ... aber trotzdessen funktioniert die letze ifanweisung nicht , hier nocham der code Schnipsel :
    if($_POST['methode'] == "aufg") {

    echo "<form method='post'>
    zu aendernde Daten eingeben<br>
    <input type='text' name='aufin'>: Aufgabe <br>
    <input type='submit' name='submit2' value='Abschicken'>
    </form>";



    if($_POST['submit2']=="Abschicken"){
    $sql = "UPDATE `baeder` SET `aufgaben` = '".$_POST['aufin']."' WHERE bad ='Vreden' and aufgaben=''";

    $result=mysql_query($sql,$con);
    echo "Daten wurden geaendert";
    }else{ echo "Daten wurden nicht geändert";}
    }
     
  8. Oxy

    Oxy Antonowka

    Dabei seit:
    15.03.07
    Beiträge:
    363
    Sind immer die Tollsten beiträge die einem so absolut garnicht helfen , trotzalledem habe ich den fehler nu gefunden
     
  9. theangel

    theangel Bismarckapfel

    Dabei seit:
    19.06.05
    Beiträge:
    141
    Führt er den SQL-Befehl denn aus oder springt deine zeite if-schleife garnicht an?

    Mach doch zwischen $sql und $result mal echo $sql und schau dir an, welchen Befehl genau er an die Datenbank schickt.

    Wenn du LaForce schon so antwortest, dann hier auch mal meine Gedanken zu dem Thema:

    Dein Code ist wirklich schlecht lesbar. Abgesehen davon, dass du in einem Forum auch immer die dafür vorgesehen code-Funktion nutzen solltest, wenn du Code einfügst.

    Du solltest dir mal angewöhnen deinen Code leserlich zu schreiben, also dich entscheiden wo du wie Leerzeichen machst und das dann auch wirklich strikt durchziehen (z.B. in deinem SQL-Befehl hast du mal Leerzeichen, mal keine. Tabulatoren helfen auch um leserlichen Code zu Produzieren genauso wie ein Zeilenumbruch an der richtigen Stelle.

    Code:
    UPDATE `baeder` SET `aufgaben` = '".$_POST['aufin']."' WHERE bad ='Vreden' and aufgaben=''
    Warum benutzt du manchmal ein ` und manchmal nicht? Warum schreibst du SET und WHERE gross, AND aber nicht? Nach dem einen= kommt ein Leerzeichen, bei einem anderen nicht.

    Dann machst du ein mal

    Code:
    = '".$_POST['aufin']."'
    und ein anderes mal

    Code:
    = '$aufin'
    Abgesehen davon, dass in dem Fall register_globals wohl aktiviert ist, was nie eine gute Idee ist.

    Code leserlich zu verfassen ist wirklich das A und O. Es erleichtert ungemein die Fehlersuche und ist ein muss, wenn man sich in fremden Code einzuarbeiten hat.

    Also nimm nett gemeinte Hinweise lieber auch als diese auf und fühl' dich nicht gleich angegriffen.
     
  10. Oxy

    Oxy Antonowka

    Dabei seit:
    15.03.07
    Beiträge:
    363
    Joa magstja recht haben aber wenn ich des Script in der Form nu habe wäre es ziemlich umständlich das alles anzupassen nur Damit es dem herrn passt .... und die Funktion


    Code:
     Habe ich vorher garnicht gesehen gehabt ;)
    Hiermit Danke für deine Antwort , habe das Problem jetzt gefunden habe lediglich die Klammer Falsch gesetzt
    mfg -Oxy-
     
  11. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    Sicherheitshinweis:

    Code:
    UPDATE `baeder` SET `aufgaben` = '".$_POST['aufin']."' ...
    
    ... ist richtig schön gefährlich. Warum?
    Darum: SQL Injektion

    Stell Dir einfach mal vor, ich gebe im Formular für "aufin" diesen Wert ein:
    Code:
    '; DROP TABLE mysql WHERE 1<>'
    
    Läuft Dein Datenbankbenutzer dann zudem noch mit erweiterten Rechte und nicht reduzierten Rechten, was sicherlich aus Faulheit bei vielen der Fall sein wird, ist der Schaden enorm.

    Abilfe: http://de.php.net/mysql_real_escape_string

    Bitte postet als Tipps keine solchen Konstrukte, wo Benutzereingaben ungefiltert in Programmcode überführt werden! Anfänger wissen die Gefahr häufig nicht einzuschätzen und neigen dazu, den geposteten Beispielcode unverändert zu verwenden!
     
  12. tjp

    tjp Baldwins roter Pepping

    Dabei seit:
    07.07.04
    Beiträge:
    3.250
    Das darf man gleich gar nicht machen! Du übernimmst einen String, der als unsicher gilt und übergibts in direkt an das DBMS. Das öffnet die Tür und Tor für SQL-Injection!

    Code:
    $aufgabe = mysql_real_escape_string ($_POST['aufin']);
    $sql = "UPDATE 'baeder' SET 'aufgaben' = '".$aufgabe."' WHERE bad = 'Vreden' AND aufgaben='';
    
     
  13. Oxy

    Oxy Antonowka

    Dabei seit:
    15.03.07
    Beiträge:
    363
    Danke Danke für eure Hilfe und anregungen =)
    Denke da dies eine Datenbank auf einem Lokalen Netzwerk werden soll brauch ich mich nicht auchnoch mit der sicherheit beschäftigen ;)
    Trotzdem viel Dank an all die Guten tipps
    mfg -Oxy-
     
  14. tjp

    tjp Baldwins roter Pepping

    Dabei seit:
    07.07.04
    Beiträge:
    3.250
    Faule Ausrede, Programme leben länger als man das gemeinhin annimmt.
     
  15. Oxy

    Oxy Antonowka

    Dabei seit:
    15.03.07
    Beiträge:
    363
    Faule aber Gute Ausrede ... meine PHP Kenntnisse sind einfachma dermassen schlecht und da ich weiss das dies lediglich ein Projekt Planer ( btw zur überischt der Projekte in "dieser" Firma dient) wird die DB und auch diese Script nur Lokal verwendet ausserdem , mussman von nem Praktikanten ja aunet zu viel erwarten *g
    mfg -Oxy-
     
  16. duderino

    duderino Goldparmäne

    Dabei seit:
    26.01.06
    Beiträge:
    556
  17. Oxy

    Oxy Antonowka

    Dabei seit:
    15.03.07
    Beiträge:
    363
    Na gut da ihr euch soviel mühe gegeben ahbt mit den Sicherheitslücken bau ichma paar Sicherheits"abfragen" oder wie man de snnene soll ein , gibt bestimmt ne bessere Note daich des Vorstellen muss vor meien Schule xD If(Dran Denk){ echo "Kotz Reiz Krieg";}Else(echo "Tip Top";)
    Mfg -Oxy-
     

Diese Seite empfehlen