Borbarad: Update wird nicht angewendet

Ich habe ein unlogisches Problem. ;-)

$update=mysql_query("UPDATE rohstoffe SET res1=res1-'$res1', res2=res2-'$res2', res3=res3-'$res3', res4=res4-'$res4' WHERE userid='$userdaten[id]' AND planetenid='$planetenid'", $db2);

Ist der Quellcode.

Umgewandelt nimmt er:
UPDATE rohstoffe SET res1=res1-'159612', res2=res2-'79806', res3=res3-'0', res4=res4-'' WHERE userid='1' AND planetenid='15'

Wenn ich das Manuell ausführe macht er es Fehlerfrei.

mysql_error();
bringt keinen Fehler.

auch ein auch am $db2 kann es nicht liegen da er die MYSQL Befehle davon und danach sauber ausführt.

LG und Danke für Tips

  1. <o,

    UPDATE rohstoffe SET res1=res1-'159612', res2=res2-'79806', res3=res3-'0', res4=res4-'' WHERE userid='1' AND planetenid='15'

    ich würde die einfachen anführungszeichen bei den Zahlenwerten in verbindung mit einer subtraktion nicht benutzen und spätestens hierbei < res4=res4-'' > würde ich stutzig werden.

    Ilja

    1. Ja ich weiß habe es auch ohne das Probiert leider das selbe Ergebnis :-(

      UPDATE rohstoffe SET res1=res1-'159612', res2=res2-'79806', res3=res3-'0', res4=res4-'' WHERE userid='1' AND planetenid='15'

      ich würde die einfachen anführungszeichen bei den Zahlenwerten in verbindung mit einer subtraktion nicht benutzen und spätestens hierbei < res4=res4-'' > würde ich stutzig werden.

      1. Mahlzeit,

        Ja ich weiß habe es auch ohne das Probiert leider das selbe Ergebnis :-(

        Meinst Du nicht, dass Du ein PRINZIPIELLES Problem hast, wenn Du offenbar Variablen mit NUMERISCHEN Werten verarbeiten willst, aber in einer dieser Variablen anscheinend NULL oder ein leerer String drin steht?

        Solltest Du dann nicht vielleicht bei der URSACHE des Problems - also bei der Behandlung/Validitätsprüfung der übergebenen Variablen - ansetzen?

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Danke für den Tip, aber dieses ist in der Tat NICHT der Fall.

          Auch wenn die Syntax:
          UPDATE rohstoffe SET res1=res1-'159612', res2=res2-'79806', res3=res3-'0' WHERE userid='1' AND planetenid='15'

          so aussieht läuft es nicht z.B. Das habe ich bereits alles getestet.

          Meinst Du nicht, dass Du ein PRINZIPIELLES Problem hast, wenn Du offenbar Variablen mit NUMERISCHEN Werten verarbeiten willst, aber in einer dieser Variablen anscheinend NULL oder ein leerer String drin steht?

          Solltest Du dann nicht vielleicht bei der URSACHE des Problems - also bei der Behandlung/Validitätsprüfung der übergebenen Variablen - ansetzen?

          MfG,
          EKKi

          1. yo,

            nicht so versuchen:

            UPDATE rohstoffe SET res1=res1-'159612', res2=res2-'79806', res3=res3-'0' WHERE userid='1' AND planetenid='15'

            sondern so:

            UPDATE rohstoffe SET res1=res1-159612, res2=res2-79806, res3=res3-0'WHERE userid=1 AND planetenid=15

            und diesen befehl bitte direkt an die datenbank ohne php.

            Ilja

  2. Hallo Borbarad,

    Ich habe ein unlogisches Problem. ;-)

    unlogisch, weil PHP und MySQL _nur_ logisch arbeiten ... ;-)

    auch ein auch am $db2 kann es nicht liegen da er die MYSQL Befehle davon und danach sauber ausführt.

    hmm,

    • setze den Errorlevel auf E_ALL
    • lass das $db2 einfach mal weg

    Gruss und Dank
    Norbert

    1. Hallo

      Hallo Borbarad,

      • setze den Errorlevel auf E_ALL
      • lass das $db2 einfach mal weg

      $db2 darf ich nicht weglasse,
      da ich gleichzeitig mit 2 DBs verbunden bin.

      Du meinst in der php.ini oder wo genau kann ich den error level umstellen`?

      1. Hallo Borbarad,

        • lass das $db2 einfach mal weg
          $db2 darf ich nicht weglasse,
          da ich gleichzeitig mit 2 DBs verbunden bin.

        hmm,
        lass Dir doch mal $db1 und $db2 ausgeben!
        Im Normalfall reicht es, wenn man direkt im Query die Datenbank anspricht:
        z.B. ... FROM db1.tabX, db2.tabY ...
        Eine seperate Connection ist nur notwendig, wenn es auch zwei DB-Server sind.

        Du meinst in der php.ini oder wo genau kann ich den error level umstellen?

        z.B. am Scriptanfang:
        ini_set('error_reporting', E_ALL);

        Gruss und Dank
        Norbert