Robert Bienert: MySQL: Alle enum-Werte ermitteln

Moin!

PHP bietet ja die wenig bekannten, aber trotzdem nützlichen mysql_field_* Funktionen an, mit denen man Informationen über die Felder/Spalten einer Abfrage erhält, so liefert mysql_field_type z.B. den Spaltentyp. Für die meisten Datentypen mag dies auch funktionieren, allerdings gibt es bei Aufzählungen Probleme, da laut dieser Funktion deren Typ "string" statt "enum" ist, den Wert "enum" liefert stattdessen mysql_field_flags. Allerdings bräuchte ich alle (möglichen) Werte dieser Aufzählung. Klar, ich könnte auch ein "DESCRIBE tabelle" loslassen und dann per preg_split mir die Werte auseinanderhacken, aber das ist nicht sehr schön.

Kennt jemand eine bessere Variante alle Werte einer Aufzählung zu erhalten, muss nicht zwingend PHP sein.

Gruß, Robert

  1. Hallo Robert,

    Allerdings bräuchte ich alle (möglichen) Werte dieser Aufzählung. Klar, ich könnte auch ein "DESCRIBE tabelle" loslassen und dann per preg_split mir die Werte auseinanderhacken, aber das ist nicht sehr schön.

    Kennt jemand eine bessere Variante alle Werte einer Aufzählung zu erhalten, muss nicht zwingend PHP sein.

    Hast Du Dir den zweiten Benutzereintrag im MySQL-Handbuch schon einmal angeschaut? http://dev.mysql.com/doc/mysql/de/ENUM.html

    Dort wird der letzte Absatz der Handbuchseite umgesetzt, ich zitiere:

    <zitat>
    Wenn Sie alle möglichen Werte einer ENUM-Spalte erhalten wollen, benutzen Sie: SHOW COLUMNS FROM tabelle LIKE enum_spalte und gehen die ENUM-Definition in der zweiten Spalte durch.
    </zitat>

    Ob das schöner ist, sei einmal dahingestellt.

    Freundliche Grüsse,

    Vinzenz

    1. Hello,

      da hatte ich hier schon male eine Funktion virgestellt namens get_info() die dann mittels "show colums from $table", was Deinem describe gleich kommt, die Werte ermittelt hat.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
    2. Hallo Robert,

      Moin!

      Kennt jemand eine bessere Variante alle Werte einer Aufzählung zu erhalten, muss nicht zwingend PHP sein.

      Hast Du Dir den zweiten Benutzereintrag im MySQL-Handbuch schon einmal angeschaut? http://dev.mysql.com/doc/mysql/de/ENUM.html

      <zitat>
      Wenn Sie alle möglichen Werte einer ENUM-Spalte erhalten wollen, benutzen Sie: SHOW COLUMNS FROM tabelle LIKE enum_spalte und gehen die ENUM-Definition in der zweiten Spalte durch.
      </zitat>

      Ob das schöner ist, sei einmal dahingestellt.

      Das ist zu schön um wahr zu sein:
      Error 1064: You have an error in your SQL syntax. Check the manual ... for the right syntax to use near 'enum_spalte'.

      Freundliche Grüsse,

      Vinzenz

      Trotzdem erst einmal Danke,
      Robert