2

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);
    if(!empty($enum_array[1]))
    {
      //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;
    }
    else
      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

<?php
            $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 '15 at 3:13
0

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) {
      die($wpdb->last_error); 
    }

    // this is the column name
    $result->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? – JediTricks007 Dec 10 '15 at 20:46
  • Good point, the database name is in a global named DB_NAME – Felix Dec 10 '15 at 21:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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