At 22:35 -0400 5/23/03, Urb LeJeune wrote:
>>>radio buttons. I detect the field is an ENUM using mysql_field_flags(). What
>>>I want to do next if determine the "M', 'S', 'H', 'D' enumeration.
>>Do you mean you want to determine the relationship between the string
>>enumeration values and their numeric equivalents?
> No, I just want to determine there are four enumerated values
>which are M,S,H, D.
>>Why not just make the list element values and labels both the same, i.e.,
>>the string values?
> I have an aversion to making life easy for the programmer at the
>expense of the user :-)
>>Otherwise, you need to get the column definition (e.g., with SHOW
>>COLUMNS), yank out the list of values, and iterate through them to
>>determine their numeric values. What language are you using? C?
> I could dig into PHPmyAdmin to see how they do it.
Yeah. Or you can may be able to use this:
# get_enumorset_info() - get metadata for an ENUM or SET column.
# Take a connection identifier, a table name, and a column name.
# Return an associative array with name, type, values, default,
# and nullable elements. Return FALSE if no info available or
# an error occurs.
function get_enumorset_info ($conn_id, $tbl_name, $col_name)
# escape any SQL pattern characters in column name
$col_name = ereg_replace ("([%_])", "\\\\1", $col_name);
$query = "SHOW COLUMNS FROM $tbl_name LIKE '$col_name'";
if (!($result_id = mysql_query ($query, $conn_id)))
if (!($row = mysql_fetch_row ($result_id)))
$info = array ("name" => $row);
if (!preg_match ("/^(enum|set)\((.*)\)$/", $row, $match))
$info["type"] = $match;
# split value list at commas
$info["values"] = explode (",", $match);
# remove surrounding quotes from values
$info["values"] = preg_replace ("/^'(.*)'$/", "\\1", $info["values"]);
# determine whether or not column can contain NULL values
$info["nullable"] = ($row == "YES");
# get default value (unset value represents NULL)
$info["default"] = $row;
It's part of the recipes distribution that accompanies MySQL Cookbook,
> Thanks again for your time and help.