[MSSQL] Probleme mit der MySQL Datenbank

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

  • [MSSQL] Probleme mit der MySQL Datenbank

    Ich habe ein hoffentlic kleines (für mich leider ein sehr grosses) Problem mit MySQL!

    Hat jemand schon mal davon gehört, das in einer Datenbank einfach so komplette Datensätze verschwinden für die KEINE Delete-Fkt programmiert wurde ???

    Folgendes:
    Ich arbeite gerade an (wär hätte es gedacht) an einem Online-Browser Game und obwohl es noch ÜBERHAUPT KEINE Möglichkeit gibt einen Planeten zu löschen oder so, fehlt mir plötzlich in der Datenbank der komplette Datensatz für einen Planeten. Sind solche Probleme, das einfach irgendwelche Datensäte verschinden bekannt? (gehostet ist das ganze momentan bei 1und1)

    Das zweite Problem das ich habe sind falsche Einträge in der Datenbank.

    elseif($funk=="arbeiter")
    {
    $zugewiesen="nein";
    if($arbeiter_frei>=$b_arbeiter)
    {
    $geb_arbeiter=$geb_arbeiter+$b_arbeiter;
    $arbeiter_frei=$arbeiter_frei-$b_arbeiter;
    $zugewiesen="ja";

    if($geb_arbeiter>$geb_level*$b_arbeiter)
    {
    $geb_arbeiter=$geb_level*$b_arbeiter;
    }

    if(@mysql_connect($host, $user, $pwd))
    {
    if(@mysql_select_db($dbname))
    {
    $sql="UPDATE game_planeten SET arbeiter_frei=\"$arbeiter_frei\", " . $geb . "_arb=\"$geb_arbeiter\" WHERE P_ID=\"$planeten_ID\"";
    $erg = mysql_query($sql);
    }
    }
    }
    }

    Diese "kurze" Script weist freie Arbeiter einem Gebäude zu.
    Dabei wird mit: if($geb_arbeiter>$geb_level*$b_arbeiter) überprüft, ob mehr Arbeiter im Gebäude sind, als darin sein dürfen.

    Jedoch passierte es jetzt schon zweimal innerhalb einer Woche, das statt z.B. 2 Arbeitern plötzlich 150999960 Arbeiter zugewiesen wurden.

    Woran kann soetwas liegen?

  • #2
    evt hieran
    $geb_arbeiter=$geb_level*$b_arbeiter;

    bissi debuggen wär nicht schlecht.
    Im Übrigen is dein Script schlecht gecodet fehler sind egal, stil hats auch nicht und btw was sollen die " in der query?
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Also: im oben gegebenen Beispiel passiert normal folgendes:

      $geb_arbeiter=$geb_level*$b_arbeiter;
      bzw.
      $geb_arbeiter=1*2;

      @MelloPie:

      Wie meinst du das mit debuggen (mit tools? wenn ja welche?)

      Was meinst du mit: "Im Übrigen is dein Script schlecht gecodet fehler sind egal, stil hats auch nicht ".
      Die "Tabs" hat das Forum leider verschluckt.

      Die sql-querys sind ja nur STRINGs und mit den " versuch ich diesen STRING mit Variablen zu "füttern" damit das Script die benötigte dynamic bekommt.

      Bin offen für neues, also bitte erklär' mir wie es gemeint ist.

      Kommentar


      • #4
        Original geschrieben von WinniPuh
        Bin offen für neues, also bitte erklär' mir wie es gemeint ist.
        z.b.


        PHP-Code:
        $sql "UPDATE
                    game_planeten
                SET
                    arbeiter_frei = '"
        .$arbeiter_frei."',
                    "
        .$geb."_arb= '".$geb_arbeiter."'
                WHERE
                    P_ID = "
        .(int)$planeten_ID;

        $erg mysql_query($sql) or die(mysql_error()); 
        Zuletzt geändert von Abraxax; 16.11.2003, 13:39.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Danke, aber wozu dient:

          or die(mysql_error());

          und warum wird der Variablentyp "(int)$planeten_ID" vor die Variable geschrieben???

          Kommentar


          • #6
            @haxe da fehlt ein .
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              or die(mysql_error());
              es werden fehler angezeigt, die mit der db zu tun haben. -> tipp: suche im forum.

              und warum wird der Variablentyp "(int)$planeten_ID" vor die Variable geschrieben???
              damit $planeten_ID 100%ig ein integerwert ist. wer weiss, wie du den mal erstellt und definiert hast. und eine id ist nunmal vom typ integer.
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Original geschrieben von MelloPie
                @haxe da fehlt ein .
                WO?
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  Da:
                  Geändert von Abraxax am 16-11-2003 um 14:39
                  Beantworte nie Threads mit mehr als 15 followups...
                  Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                  Kommentar


                  • #10
                    OffTopic:
                    Original geschrieben von MelloPie
                    Da:
                    Geändert von Abraxax am 16-11-2003 um 14:39
                    schade. das man die dinger nicht ausblenden kann...
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      damit $planeten_ID 100%ig ein integerwert ist. wer weiss, wie du den mal erstellt und definiert hast. und eine id ist nunmal vom typ integer.
                      Was passiert eigentlich wenn ich einen SQL-Datensatz mit einem UPDATE String aktualisiere und z.B. einen (double) Wert habe, statt des von der DaBa verlangten (int).

                      (Es ist bei momentan nicht der Fall, aber es würde mich interessieren!)

                      Kommentar


                      • #12
                        was bei der mysql nicht passt, wird passende gemacht. im zweifelsfall ist in der DB dann ne 0 drin.
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          OK - das is ja schon mal gut!

                          Was ich aber immer noch nicht versteh', ist:

                          Wie kann ein Datensatz einfach verschwinden (is mittlerweile schon dreimal passiert) ohne das für diese Tabelle irgendwo ein mysql-query für eine DELETE-Fkt. geschrieben wurde?

                          Ist solch ein Phänomän bekannt?

                          Kommentar


                          • #14
                            wieso datensätze verschwinden, kann ich dir nicht sagen.

                            evtl. sind deine dateien defekt oder was auch immer.
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar

                            Lädt...
                            X