Probleme mit matzh operatoren und mysql error

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

  • #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

    Kommentar


    • #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?

      Kommentar


      • #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 
        ?

        Kommentar


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

          Kommentar


          • #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.

            Kommentar


            • #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.

              Kommentar


              • #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?

                Kommentar


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

                  Kommentar


                  • #24
                    bankgeld-'30'

                    Die da!

                    Kommentar


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

                      Kommentar


                      • #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.

                        Kommentar


                        • #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]

                          Kommentar


                          • #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!

                            Kommentar


                            • #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.

                              Kommentar


                              • #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)?

                                Kommentar

                                Lädt...
                                X