Christophe: SQL update wird nicht ausgeführt

Hallo

Ich hätte da noch eine frage zu php und sql. ich verwende einen mssql server und will ein sql update über ca. 1800 einträge laufen lassen. Das php programm funktioniert und auch die mssql_query meldet das alles ok sei. Nur in der Datenbank wird nicht ein einziger datensatz upgedatet.

Habe keine idee mehr was ich falsch mache. könnte es sein das apache ziggt oder habt ihr noch eine andere idee??

Gruss Christophe

  1. Hi,

    also dir ohne eine Statement zu helfen wird schwierig. Hast du vielleicht ein Kriterium beim Update gesetzt, auf das kein einziger Datensatz passt? Cached dein Browser die Anzeige und die Sätze sind in Wahrheit geändert worden?

    MfG
    Rouven

    --
    -------------------
    ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|
    1. Hi,

      also dir ohne eine Statement zu helfen wird schwierig. Hast du vielleicht ein Kriterium beim Update gesetzt, auf das kein einziger Datensatz passt? Cached dein Browser die Anzeige und die Sätze sind in Wahrheit geändert worden?

      Wenn ich die querys im browser anzeigen lasse und diese dann in den mssql server kopiere funktioniert es. nur direkt aus dem browser geht es nicht!

      1. Hi,

        Wenn ich die querys im browser anzeigen lasse und diese dann in den mssql server kopiere funktioniert es. nur direkt aus dem browser geht es nicht!

        sorry wenn das jetzt irgendwie unwirsch klingt, aber was sollen wir jetzt tun, raten? Mit welchem Code führst du sie aus, unterdrückst du Fehlermeldung bzw. prüfst du auf erfolgreiche Ausführung?

        MfG
        Rouven

        --
        -------------------
        ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|
        1. so, der code den ich verwende:

          $msSQLconn = mssql_connect("gaga", "test", "");
          $dbTable   = mssql_select_db("verwaltung", $msSQLconn);

          $query  = "SELECT idauftrag "
                   ."FROM tblRechnung "
                   ."WHERE (DATUM = CONVERT(DATETIME, '2006-05-16 00:00:00', 102))";

          $result  = mssql_query($query, $msSQLconn);
          $ids     = mssql_fetch_array($result);
          echo "anzahl felder ".mssql_num_rows($result);

          //echo "<br>".$ids[0];
          $i =0;
          while($row = mssql_fetch_array($result))
          {
           $querySel = "SELECT TOP 1 IDEDITION, IDAUFTRAG, ID "
                         ."FROM tblAuftragEdition "
                         ."WHERE     (IDAUFTRAG = ".$row["idauftrag"].") "
                         ."ORDER BY IDEDITION DESC";
           $resultSel  = mssql_query($querySel, $msSQLconn);
           $sel = mssql_fetch_row($resultSel);
              if (isset($sel[2]))
              {
                echo "<br>".$queryUpd = "UPDATE tblAuftragEdition SET erhalten='2006-05-16' WHERE id=".$sel[2].";";
             $resultUpd  = mssql_query($queryUpd, $msSQLconn);
             $i++;
           }
          }
          echo "schleife ".$i;
          mssql_close($msSQLconn);

          ich hoffe es hilft! DANKE

          1. Hey,

            echo "<br>".$queryUpd = "UPDATE tblAuftragEdition SET erhalten='2006-05-16' WHERE id=".$sel[2].";";

            just a long shot, aber versuch mal das ";" aus dem Statement zu entfernen. Zumindest MySQL kann sich über sowas tierisch erzürnen, aber eben nicht über z.B. PHPMyAdmin, dass das Ding selber rausnimmt/als Trennzeichen interpretiert.

            MfG
            Rouven

            --
            -------------------
            ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|
            1. Ansonsten gib mal die mssql_get_last_message aus, vielleicht hilfts...

              MfG
              Rouven

              --
              -------------------
              ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|
              1. Ansonsten gib mal die mssql_get_last_message aus, vielleicht hilfts...

                HA, nun kommen wir der sache näher:
                Meldung => Arithmetic overflow occurred.

                Nur weis ich nicht was ich damit anfangen sol :-(

                Aber schon mal einen schritt weiter danke.

                1. Ich hab's. das datum muss anders geschrieben werden:
                  $queryUpd = "UPDATE tblAuftragEdition SET erhalten='16.5.2006' WHERE id=".$sel[2];

                  Danke für deine hilfe

                2. Hi,

                  Meldung => Arithmetic overflow occurred.

                  was für ein Datentyp ist denn diese Datumsspalte? Das scheint z.B. bei SmallDateTime zu passieren, wenn die Datumsgrenze überschritte wird (meint Google...)

                  MfG
                  Rouven

                  --
                  -------------------
                  ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|
            2. Hey,

              echo "<br>".$queryUpd = "UPDATE tblAuftragEdition SET erhalten='2006-05-16' WHERE id=".$sel[2].";";
              just a long shot, aber versuch mal das ";" aus dem Statement zu entfernen. Zumindest MySQL kann sich über sowas tierisch erzürnen, aber eben nicht über z.B. PHPMyAdmin, dass das Ding selber rausnimmt/als Trennzeichen interpretiert.

              Hab ich versucht ist aber leider nicht des Rätsels lösung. Auch mit wehniger querys funktioniert es nicht! UNGLAUBLICH so was hatte ich noch nie. Viel einfacher kann so ein code doch nicht sein!

              und um dies von hand zu machen ist dies zuviel.

              1. echo $begrüßung;

                Viel einfacher kann so ein code doch nicht sein!

                Im Gegenteil. Deinem Code fehlt komplett die Auswertung von Fehlerzuständen. Viele Datenbank-Funktionen geben im Fehlerfall nicht den normalerweise gewünschten Wert von Typ "resource" zurück sondern "false". "false" ist jedoch für die meisten nachfolgenden Funktionen kein gültiges Argument, was dann zu einer PHP-Fehlermeldung führt. (Mich wundert, dass du keine solche bekommst. Hast du diese ausgeschaltet?) Bitte informiere dich im Handbuch, was die von dir verwendeten Funktionen im Gutfall und was im Fehlerfall zurückgeben, und reagiere in deinem Code mit geeigneten Maßnahmen. Neben dem "false" als Rückgabewert der Funktionen gibt es eine Funktion, die für diesen Fehler den Fehlertext der Datenbank liefert. (Das für MS-SQL zuständige mssql_get_last_message wurde dir ja schon genannt.)

                echo "$verabschiedung $name";

          2. echo "<br>".$queryUpd = "UPDATE tblAuftragEdition SET erhalten='2006-05-16' WHERE id=".$sel[2].";";

            ...das steht da aber wahrscheinlich nicht genau so, oder?
            Ich überleg mir lieber nicht, was ein echo kombiniert mit einem Concat kombiniert mit einer Zuweisung ist...

            MfG
            Rouven

            --
            -------------------
            ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|
            1. hi,

              echo "<br>".$queryUpd = "UPDATE tblAuftragEdition SET erhalten='2006-05-16' WHERE id=".$sel[2].";";
              ...das steht da aber wahrscheinlich nicht genau so, oder?
              Ich überleg mir lieber nicht, was ein echo kombiniert mit einem Concat kombiniert mit einer Zuweisung ist...

              Warum nicht - Angst vor der Erkenntnis, dass es eine gültige Anweisung darstellt?

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }
              1. Hi,

                Warum nicht - Angst vor der Erkenntnis, dass es eine gültige Anweisung darstellt?

                ja, irgendwie schon... Da es - zumindest gehe ich davon aus solange der OP nichts gegenteiliges sagt - keinen Syntaxfehler gegeben hat muss wohl was - ähm - sinnvolles dabei rausgekommen sein.

                MfG
                Rouven

                --
                -------------------
                ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|