Daten werden nicht gespeichert

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Daten werden nicht gespeichert

    Hi, ich bins wieder
    Bin übrigens bis jetzt sehr zufrieden und glücklich über die Hilfe die ich hier bekommen habe, vielen Dank dafür

    Zu meinem neuen Problem:
    Bei manchen SQL Anfragen werden die Daten einfach nicht gespeichert, bei anderen schon. Es kommt keine Fehlermeldung, es scheint alles zu klappen, aber die Daten werden nicht eingetragen..

    Hier ein Beispiel (Es geht um eine Bewertung):

    Das Formular:

    PHP-Code:
    <form action="index.php?s=creation&id=<?echo $cid?>&add=vote" method="post">
                                <select name="vote">
                                    <option value="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</option>
                                    <option value="1">1</option>
                                    <option value="2">2</option>
                                    <option value="3">3</option>
                                    <option value="4">4</option>
                                    <option value="5">5</option>
                                    <option value="6">6</option>
                                    <option value="7">7</option>
                                    <option value="8">8</option>
                                    <option value="9">9</option>
                                </select>
        <input type=submit id="settings_box_vote" name="submit" value="Vote">
        </form>

    Der Insert Code:
    PHP-Code:
    if($_GET["add"] == "vote")
         { 
              if (
    $_POST["vote"] != "")
              {
          
                      
    $sql_vote "INSERT INTO votes (from, stars, cid)
                      VALUES ('"
    .$username."', '".$_POST["vote"]."', '".$cid."')";
                      
    mysql_query($sql_vote);
                      echo 
    "Vote eingetragen";
              }
              else
              {
                  echo 
    "Kein Vote angegeben";
              }
        } 
    Die Datenbank sieht so aus:

    id int(30) Nein Kein AUTO_INCREMENT from varchar(30) latin1_swedish_ci Nein Kein
    stars varchar(3) latin1_swedish_ci Nein Kein
    cid varchar(30) latin1_swedish_ci Nein Kein
    deleted varchar(3) latin1_swedish_ci Nein 0

    Hab ein Bild angehängt


    Ich hab mir den Code jetzt seit Tagen angeschaut, aber ich komm nicht auf den Fehler

    Ich hoffe jemand von euch findet ihn, vielen Dank im Vorraus
    Angehängte Dateien
    Zuletzt geändert von Spunk95; 19.08.2010, 20:20.

  • #2
    Wenn der INSERT fehl schlägt, meldet MySQL einen Fehler. Du aber ignorierst dieses.
    Dein Code ist (höchstwahrscheinlich) anfällig für SQL Injections.
    Wenn du die unterbindest, dann sollte auch das Speichern zuverlässig klappen.

    Tipp:
    mysql_error()
    mysql_real_escape_string()
    Wir werden alle sterben

    Kommentar


    • #3
      Zitat von combie Beitrag anzeigen
      Wenn der INSERT fehl schlägt, meldet MySQL einen Fehler. Du aber ignorierst dieses.
      Dein Code ist (höchstwahrscheinlich) anfällig für SQL Injections.
      Wenn du die unterbindest, dann sollte auch das Speichern zuverlässig klappen.

      Tipp:
      mysql_error()
      mysql_real_escape_string()
      Danke für die schnelle Antwort, habs keider noch nicht ganz verstanden
      Soll ich noch ne if Anfrage einbauen, für denn Fall, dass es Fehlschlägt? Die beiden Tipps kenn ich nicht so gut, hab ich noch nice benutzt Aber ich denke mal du meinst es so oder?

      PHP-Code:
      if (!isset ($sql_vote)){
       echo 
      mysql_error($sql_vote);

      Zuletzt geändert von Spunk95; 19.08.2010, 20:41.

      Kommentar


      • #4
        PHP-Code:
        if (!isset ($sql_vote)){ 
         echo 
        mysql_error($sql_votes); 

        Quatsch!

        Warum schaust du nicht mal ins Handbuch?
        Wir werden alle sterben

        Kommentar


        • #5
          Hab grade in das PHP Handbuch hier geschaut (oder welches meinst du?)... Aber da hab ich dazu nichts gefunden. Ich weiß auch nicht genau wonach ich suchen soll
          Find ich den Fehler nun wenn ich ihn ausgeben lasse oder anders?

          Kommentar


          • #6
            Was sagt das Handbuch zu mysql_query() ?

            Richtig, es liefert bei einem erfolgreichen Insert True und bei einem fehlgeschlagenen False!
            Prüfe das!
            Nutze das!
            Lasse dir im Fehlerfall den Fehler mit mysql_error() zeigen.

            mysql_real_escape_string() mittlerweile eingebaut?
            Nein?
            Warum nicht?
            Tue das.

            Find ich den Fehler nun wenn ich ihn ausgeben lasse
            Solange du das ignorierst, wirst du ihn nicht finden.
            Wir werden alle sterben

            Kommentar


            • #7
              Die Fehlermeldung:
              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 'from, stars, cid) VALUES ('Spunk', '1', '3')' at line 1

              mysql_real_escape_string() werd ich mir jetzt durchlesen, also was das ist
              Danke

              Kommentar


              • #8
                near 'from
                from ist ein reserviertes Wort!
                Siehe: "SELECT bla [COLOR="#ff0000"]FROM[/COLOR] blub"

                Es ist also keine gute Idee dieses Wort als Spaltennamen zu verwenden. MySQL ist allerdings gnädig und erlaubt es den Begriff in Backticks zu setzen.

                mysql_real_escape_string() werd ich mir jetzt durchlesen, also was das ist
                Ja, das solltest du tun!
                Und nicht nur lesen, [COLOR="#ff0000"]sondern auch einsetzen![/COLOR]
                Zuletzt geändert von combie; 19.08.2010, 21:19.
                Wir werden alle sterben

                Kommentar


                • #9
                  Du bist ein Held!

                  Hab mysql_real_escape_string() jetzt eingebaut und vor allem from in from_user umbenannt und jetzt funktioniert es

                  Vielen vielen Dank

                  Kommentar

                  Lädt...
                  X