[MySQL 4.1] verwenden von DECODE

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

  • [MySQL 4.1] verwenden von DECODE

    Hallo Leute,

    brauche mal wieder ein wenig Hilfe. Entweder bin ich zu doof oder mein Englisch reicht nicht aus um die diversen Lösungen zu verstehen.

    Ich möchte, wie es in SQL möglich ist, einen DECODE verwenden:
    PHP-Code:
    DECODE ('$pic_name'''path_pic'$path_pic'
    Sollte eigentlich so funktionieren:
    Wenn $pic_name == '' dann lass den Eintrag in der DB unverändert. Anderenfalls nimm den Wert aus der Hostvariablen.

  • #2
    hm... was ist denn DECODE für eine Funktion? Die von MySQL ist es nicht, oder? Oder ist das eine von dir selbst erfundenen Funktion, welche noch implementiert werden muß?

    Willst du eigentlich nur ein UPDATE mit der genannten Bedingung oder was? Wenn ja:

    update ... set field = if(field='',field,'whatever') ...

    Kommentar


    • #3
      DECODE ist eigentlich ein Schlüsselwort in SQL. Unter Oracle wird das sehr häufig verwendet. Möglich, dass es unter MYSQL nicht vorhanden ist.

      Vielleicht sollte ich das ganze Update anführen:
      PHP-Code:
      UPDATE rez_rezept
         SET name 
      '$rez_name',
            ....
            
      path_pic DECODE ('$pic_name'''path_pic'$path_pic'),
            ....
       
      WHERE id   $id
      Aber ich werde Deine Lösung mal einbauen. Danke
      Zuletzt geändert von Godfrey; 04.03.2005, 13:50.

      Kommentar


      • #4
        Original geschrieben von Godfrey
        DECODE ist eigentlich ein Schlüsselwort in SQL. Unter Oracle wird das sehr häufig verwendet.
        die Struktur kommt mir daher auch irgendwie bekannt vor, da ich aber selten mit Oracle zu tun habe, war ich mir nicht sicher . Trotz allem, du kannst nicht Oracle speziefische Funktionen anderswo erwarten. Probiere meine Version aus. IMHO sie macht das, was du willst.

        Kommentar


        • #5
          Ehmmm, Sorry, aber Schlüsselwort ist hier der falsche Begriff, es ist ein Funktion unter Oracle, eventuell auch generell für SQL, aber das weiss ich auch nicht so genau.

          Ich setze auch nicht prinzipiell darauf, dass solche Funktionen auch in MYSQL vorhanden sind. Aber ich habe folgendes gefunden und das sollte eigentlich auch funktionieren:

          http://dev.mysql.com/doc/maxdb/en/cf...61/content.htm

          Also eigentlich genau das was ich machen will. Scheint aber doch anderes zu funktionieren, oder habs einfach wirklich nicht geblickt.

          Aber egal, habe mal Deine Lösung eingebaut und im Moment geht die auch nicht. Keine Ahnung was ich da falsch mache, aber ich brüte grad drüber.
          PHP-Code:
          mysql_query("
              UPDATE rez_rezept
                 SET name = '
          $rez_name',
          ...
                 path_pic = if('
          $pic_name'='',path_pic,'$path_pic'),
          ...
                 WHERE id  = 
          $id"("
          ... 
          Trotzdem die Hostvariable $pic_name gefüllt ist ändert er mir den Wert nicht ab.

          Kommentar


          • #6
            Hm.. das ist aber von MaxDB und hat nichts mit MySQL zu tun.

            Mach mal:

            PHP-Code:
             $sql =("
                UPDATE rez_rezept
                   SET name = '
            $rez_name',
            ...
                   path_pic = if('
            $pic_name'='',path_pic,'$path_pic'),
            ...
                   WHERE id  = 
            $id...";
            mysql_query($sql) or die('sql = '.$sql.'<br />Error: '.mysql_error()); 
            und schau dir die Fehlermeldung an, oder poste sie mal.

            Kommentar


            • #7
              Also ich hab im Moment keine Ahnung warum, aber so funktioniert es. Möglicherweise ein falsch gesetztes Satzzeichen? Aber ich hab mein Statement nur in Deine Funktion eingesetzt...

              Naja, es läuft und man soll sich manchmal nicht Wundern warum.

              Danke für die Hilfe.

              Kommentar

              Lädt...
              X