Probleme mit matzh operatoren und mysql error

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    das kommt weil die 30 aus einer variable kommt:
    PHP Code:
        $sql="UPDATE users
        SET 

    bankgeld=bankgeld-'.
    $auszahl.'
        
    WHERE UserSession='"
    .session_id()."'";
    $result=mysql_query($sql) or die (mysql_error());
    # in der mittleren zeile 
    wrum dies allerdings auch im query so bleibt verstehe ich nicht

    Comment


    • #17
      das kommt weil die 30 aus einer variable kommt:
      Nee, das kommt weil du das da falsch eingibst!

      wrum dies allerdings auch im query so bleibt verstehe ich nicht
      Ist doch ganz normal. Wenn du 30 eingibst, dann steht da 30 drin, wenn du AAA eingibst, dann steht da AAA drin und wenn du ein Anführungszeichen eingibst, dann steht da auch nachher ein Anführungszeichen drin. Klingt logisch, oder?

      Comment


      • #18
        also einfach nur:
        PHP Code:
        $sql="UPDATE users
            SET 

        bankgeld=bankgeld-.
        $auszahl.
            
        WHERE UserSession='"
        .session_id()."'";
        $result=mysql_query($sql) or die (mysql_error());
        # in der mittleren zeile 
        ?

        Comment


        • #19
          ach nein. ich habe die FALSCHEN anführungszeichen genmmen
          ich doooooooooooooof

          Comment


          • #20
            Getestet?
            Wenn ja, dann hast du sicher bemerkt, dass du die Punkte immer noch einbaust. Und das obwohl ich dir gerade erst gesagt habe, dass die (bzw. der erste davon) den Fehler verursachen.

            Comment


            • #21
              ich habs gefunden. jetzt funzt es:
              PHP Code:
              function geldauszahlen($auszahl)
              {
                  
              $sql="UPDATE users
                  SET bankgeld=bankgeld-'"
              .$auszahl."'
                  WHERE UserSession='"
              .session_id()."'";
              $result=mysql_query($sql) or die (mysql_error());

                  
              $sql="UPDATE users
                  SET geld=geld+'"
              .$auszahl."'
                  WHERE UserSession='"
              .session_id()."'";
              $result=mysql_query($sql) or die (mysql_error());
              if(
              $result=="true")
              {
              echo 
              "Das Geld wurde dir in dein Inventar ausgezahlt!";
              }
              else
              {
              echo 
              "Es gab einen Fehler bei der Transaktion! Bitte versuche es erneut mit einer anderen Summe!";
              }


              DAnke für die hilfe, auch wenn ich amnchmal etwas begriffstutzi9g war.

              Comment


              • #22
                Wenn du mir noch erklärst, warum du einen Zahlenwert (30) als String kennzeichnest. Willst du die SQL-Injections in dein Script noch zusätzlich stärken?

                Comment


                • #23
                  wien wäre es denn richtig? ich verstehe jetzt nicht welche anführungszeichen oder puinkte falsch sind.

                  Comment


                  • #24
                    bankgeld-'30'

                    Die da!

                    Comment


                    • #25
                      und als variable? da hats du mir letzten monat gesagt die müsste man in pu kte setzetn!

                      Comment


                      • #26
                        und als variable? da hats du mir letzten monat gesagt die müsste man in pu kte setzetn!
                        Kann es sein, dass du da PHP und MySQL verwechselst??? Du redest gerade von einer String-Variablen-Verkettung in PHP. Wir sind hier aber gerade bei einem SQL-Query. Und da haben weder Punkte noch Anführungszeichen bei Zahlen etwas zu suchen. Letzteres ist bei PHP natürlich auch fehl am Platz.

                        Comment


                        • #27
                          wien wäre es denn richtig?
                          PHP Code:
                          $sql "UPDATE users SET bankgeld=bankgeld-" intval $auszahl ) .
                          " WHERE UserSession = '" mysql_real_escape_string session_id ( ) ) . "'"
                          Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                          Comment


                          • #28
                            ok. danke tontechniker. es funzt.

                            Wegen der vollständigkeit hier das scripteionmal für ein- und einmal für auszahlen)
                            PHP Code:
                            function geldeinzahlen($einzahl)
                            {
                            $sql "UPDATE users SET bankgeld=bankgeld+" intval $einzahl ) .
                            " WHERE UserSession = '" mysql_real_escape_string session_id ( ) ) . "'";
                            $result=mysql_query($sql) or die (mysql_error());

                            $sql "UPDATE users SET geld=geld-" intval $einzahl ) .
                            " WHERE UserSession = '" mysql_real_escape_string session_id ( ) ) . "'";
                            $result=mysql_query($sql) or die (mysql_error());
                            if(
                            $result=="true")
                            {
                            echo 
                            "<br>Das Geld wurde auf dein Konto überwiesen!";
                            }
                            else
                            {
                            echo 
                            "<br>Es gab einen Fehler bei der Transaktion! Bitte versuche es erneut mit einer anderen Summe!";
                            }
                            }

                            function 
                            geldauszahlen($auszahl)
                            {
                            $sql "UPDATE users SET bankgeld=bankgeld-" intval $auszahl ) .
                            " WHERE UserSession = '" mysql_real_escape_string session_id () ) . "'";
                            $result=mysql_query($sql) or die (mysql_error());

                            $sql "UPDATE users SET geld=geld+" intval $auszahl ) .
                            " WHERE UserSession = '" mysql_real_escape_string session_id ( ) ) . "'";
                            $result=mysql_query($sql) or die (mysql_error());
                            if(
                            $result=="true")
                            {
                            echo 
                            "<br>Das Geld wurde dir in dein Inventar ausgezahlt!";
                            }
                            else
                            {
                            echo 
                            "<br>Es gab einen Fehler bei der Transaktion! Bitte versuche es erneut mit einer anderen Summe!";
                            }


                            nochmal danke an euch alle!

                            Comment


                            • #29
                              Um den Lerneffekt noch etwas zu steigern:

                              Die Funktion:
                              PHP Code:
                              <?php

                              function zahleGeldAus($betrag)
                              {
                                  
                                  
                              $sql 'UPDATE users
                                          SET 
                                              bankgeld=bankgeld-' 
                              $betrag ',
                                              geld=geld+' 
                              $betrag '
                                          WHERE UserSession = "' 
                              session_id() . '"';
                                  
                              $res mysql_query($sql);

                                  return 
                              mysql_affected_rows($res);
                                  
                              }

                              ?>
                              Das Formular:
                              PHP Code:
                              <?php

                              include_once("../sessionhelpers.inc.php");

                              if (isset(
                              $_POST['auszahlen']))
                              {
                                  if(
                              zahleGeldAus(intval($_POST['auszahlen'])))
                                      echo 
                              'Das Geld wurde dir in dein Inventar ausgezahlt!';
                                  else
                                      echo 
                              'Es gab einen Fehler bei der Transaktion! Bitte versuche es erneut mit einer anderen Summe!';
                              }

                              ?>

                              <form action="bankabheben.php" method="post" >
                                <p><label>Wie viel Geld möchtest du abheben?</label>
                                  <input type="text" name="auszahlen" />
                                  <input type="submit" value="Jetzt auszahlen!" /></p>
                              </form>
                              Wobei man sein Konto bei dir ganz schön überziehen kann.

                              Comment


                              • #30
                                ich weiß.
                                daran arbeite ich aber gerade.
                                ich fidne nur keinen denkanstoß. könntest du mir einen gebn(irgendwie dass man nicht in den - bereich gehen kann)?

                                Comment

                                Working...
                                X