Michael: Weis nicht weiter... PHP mag nicht wie ich :-(

Hallo,

schreibe gerade an einem PGP was einen datensatz in einer ODBC Datenquelle ändern soll...

Der Code:
  include("xx/xx/ZBD.inc");
  $odbc2 = (odbc_connect ($achost4, $acuser4, $acpwd4));
  $sql2 = odbc_exec($odbc2, "UPDATE $acname41 SET "
           . "Subsystem = '$A4',"
           . "Jobstatus = '$A5',"
           . "Systembenutzer = '$A7' "
  -->      . "WHERE ID = $f_id ;");

--> Angeblich ist da was falsch ... aber was nur ???

Ich komme einfach nicht weiter... auch nachlesen hat nichts gebracht bzw. zu keinem Ergebnis geführt...

Kann mir wer helfen ?

Gruß
Michael

  1. Nabend,

    $sql2 = odbc_exec($odbc2, "UPDATE $acname41 SET "
               . "Subsystem = '$A4',"
               . "Jobstatus = '$A5',"
               . "Systembenutzer = '$A7' "
      -->      . "WHERE ID = $f_id ;");
    --> Angeblich ist da was falsch ... aber was nur ???

    Tja, was wird dir denn gesagt, was falsch sei? Du bekommst doch eine Meldung, die das angibt, so wie es sich liest.
    Es empfiehlt sich auch immer, den SQL-Text in eine Variabel zu speichern und eben in solchen Fällen einmal auszugeben. Meistens kann man dann die Meldung nachvollziehen.

    Bis denne,

    1. Tja, was wird dir denn gesagt, was falsch sei? Du bekommst doch eine Meldung, die das angibt, so wie es sich liest.

      Ja. Es würde wirklich Sinn machen, wenn Du in solchen Fällen die Fehlermeldung postest, die Du erhälst und dazu dann halt die entsprechende Codezeile (wie Du es getan hast) und am Besten auch noch die Codezeile davor.

      1. Hallo...

        Diese Fehlermeldung erhalte ich dann:
        Warning: odbc_exec(): SQL error: [Microsoft][ODBC Microsoft Access Driver] Syntaxfehler in UPDATE-Anweisung., SQL state 37000 in SQLExecDirect in D:\xxx\xxx\Jobbearbeiten.php on line 108

        Aber leider keine Ahnung was ich mit dieser anfangen soll...

        Danke..
        michael

        1. hmm, ich bin jetzt nicht sicher, aber ich glaube, es könnte am letzten Teil deines Statements liegen:
          "WHERE ID = $f_id ;");

          Faß doch mal das $f_id in Quotes und nimm das Semikolon dahinter weg.

          1. Hi :-)

            "WHERE ID = '$f_id' ");  <<-- jetzt !

            »»»»  "WHERE ID = $f_id ;"); <<-- Vorher

            Hats leider auch nicht gebracht...

            Probiere jetzt schon seit 4 Std. daran rum...

            Michael

            1. Hello,

              hast Due Dir denn das fertig ausgerechnete Statement vor der Ausführung nochmal ausgeben lassen? Es könnte ja sein, dass z.B. in $f_id kein Wert drin steht und dann stüde da im Statement ja "WHERE ID = ;"

              Und das ist ja eindeutig ein Fehler...

              Liebe Grüße aus http://www.braunschweig.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              1. Hallo Tom,

                hast Due Dir denn das fertig ausgerechnete Statement vor der Ausführung nochmal ausgeben lassen? Es könnte ja sein, dass z.B. in $f_id kein Wert drin steht und dann stüde da im Statement ja "WHERE ID = ;"

                Ja :-) habe ich auch schon ... $f_id hat einen Wert...

                Habe es momentan auch so gestellt...

                Code:
                include("../.....usw.
                $odbc2 = (odbc_connect ($achost4, $acuser4, $acpwd4));
                $sql2 = odbc_exec($odbc2, "UPDATE $acname41 SET Systembenutzer = $A7 WHERE ID = $f_id ;");

                Und erhalte diese Fehlermeldung:
                Warning: odbc_exec(): SQL error: [Microsoft][ODBC Microsoft Access Driver] Syntaxfehler in UPDATE-Anweisung., SQL state 37000 in SQLExecDirect in D:\xxx\xxx\Jobbearbeiten.php on line 105

                Die Datenbank worin dieses geschrieben werden soll ist eine Access DB.

                Viele GRüße

                Michael

                1. Hello,

                  include("../.....usw.
                  $odbc2 = (odbc_connect ($achost4, $acuser4, $acpwd4));
                  $sql2 = odbc_exec($odbc2, "UPDATE $acname41 SET Systembenutzer = $A7 WHERE ID = $f_id ;");

                  echo "<p>".htmlentities($sql2)."</p>";

                  Und erhalte diese Fehlermeldung:
                  Warning: odbc_exec(): SQL error: [Microsoft][ODBC Microsoft Access Driver] Syntaxfehler in UPDATE-Anweisung., SQL state 37000 in SQLExecDirect in D:\xxx\xxx\Jobbearbeiten.php on line 105

                  Die Datenbank worin dieses geschrieben werden soll ist eine Access DB.

                  Und dann wirst Du vieleleicht feststellen, dass " Systembenutzer = blah " so nicht zulässig ist, und es heißen müsste " Systembenutzer = 'blah' "

                  Kann das sein?
                  Ich kenne ja die Datentypen nicht, die Du verwendest.

                  Liebe Grüße aus http://www.braunschweig.de

                  Tom

                  --
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  1. Hello,

                    Und dann wirst Du vieleleicht feststellen, dass " Systembenutzer = blah " so nicht zulässig ist, und es heißen müsste " Systembenutzer = 'blah' "

                    Kann das sein?
                    Ich kenne ja die Datentypen nicht, die Du verwendest.

                    Oder ist Die ID nicht numerisch? Hast Du auch nix drüber geschrieben bisher.
                    Man sollte eigentlich immer alle Werte in Häkchen packen außer NULL, der ja auch keiner ist... Das sollte auch bei MS-SQL für Access klappen.

                    Liebe Grüße aus http://www.braunschweig.de

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen