I'm trying to convert this to using a $wpdb class. It will return all the enums possible and i have to use this $wpdb due to mysql_query giving me weird error (no database selected) Code is following

function getEnumValues($table, $field)
    $enum_array = array();
    $query = 'SHOW COLUMNS FROM `' . $table . '` LIKE "' . $field . '"';
    $result = mysql_query($query);

    if($result === FALSE) {
    die(mysql_error()); }

    $row = mysql_fetch_row($result);
    preg_match_all('/\'(.*?)\'/', $row[1], $enum_array);
      //Shift array keys to match original enumerated index in MySQL (allows for use of index values instead of strings)
      foreach($enum_array[1] as $mkey => $mval) $enum_fields[$mkey+1] = $mval;
      return $enum_fields;
      return array(); // Return an empty array to avoid possible errors/warnings if array is passed to foreach() without first being checked with !empty().

Afterwards I have to use this code snippet to read them out

            $enums = getEnumValues("property", "form_field_type");
            foreach($enums as $enum){
                  echo '<input type = "radio" name = "form_field_type" value = "'.$enum.'">';
                  echo '<label for = "'.$enum.'"> '.$enum.'</label><br>';
  • 1
    of note, the mysql extension is deprecated, the mysql_query function and others will throw warnings in recent versions of PHP, and will fail completely in the newest versions ( the extension was removed in favour of mysqli and PDO )
    – Tom J Nowell
    Dec 9, 2015 at 3:13

2 Answers 2


You can query INFORMATION_SCHEMA and achieve the same:

function getEnumValues($table, $field)

    global $wpdb;

    $result = $wpdb->get_row("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '" . DB_NAME . "' AND TABLE_NAME = '" . $table . "' AND COLUMN_NAME LIKE '" . $field . "'");

    if($result === FALSE) {

    // this is the column name

  • Hey if you have a datbase set in config.php that you want to work with, is setting the database name still required? Dec 10, 2015 at 20:46
  • Good point, the database name is in a global named DB_NAME
    – Felix
    Dec 10, 2015 at 21:15

Here is a solution for a WordPress table field. This will break if the ENUM values have comma in them


  • Could you include the relevant parts of the code in the answer please, rather than just linking to it? Thanks!
    – Rup
    Oct 2, 2020 at 23:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.