如何在MySQL数据库中获取枚举可能的值?

我想用数据库中的枚举可能的值自动填充下拉列表。这在MySQL中可能吗?

千巷猫影
浏览 332回答 3
3回答

PIPIONE

我有一个适合您的codeigniter版本。它还从值中去除引号。function get_enum_values( $table, $field ){    $type = $this->db->query( "SHOW COLUMNS FROM {$table} WHERE Field = '{$field}'" )->row( 0 )->Type;    preg_match("/^enum\(\'(.*)\'\)$/", $type, $matches);    $enum = explode("','", $matches[1]);    return $enum;}

温温酱

您可以通过查询如下来获取值:SELECT SUBSTRING(COLUMN_TYPE,5)FROM information_schema.COLUMNSWHERE TABLE_SCHEMA='databasename'     AND TABLE_NAME='tablename'    AND COLUMN_NAME='columnname'从那里,您需要将其转换为数组:如果您很懒,请直接将其评估为数组(尽管MySQL的单引号转义可能不兼容),或者$ options_array = str_getcsv($ options,',',“'”)可能会起作用(如果更改子字符串以跳过开头和结尾的括号),或者正则表达式

森栏

如果要确定ENUM列的所有可能值,请使用SHOW COLUMNS FROM tbl_name LIKE enum_col并在输出的Type列中解析ENUM定义。您会想要类似:$sql = "SHOW COLUMNS FROM `table` LIKE 'column'";$result = $db->query($sql);$row = $result->fetchRow();$type = $row['Type'];preg_match('/enum\((.*)\)$/', $type, $matches);$vals = explode(',', $matches[1]);这将为您提供引用的值。MySQL总是返回用单引号括起来的这些。值中的单引号由单引号引起来。您可能可以安全地调用trim($val, "'")每个数组元素。您将需要转换''为just '。以下代码将返回$ trimmedvals数组项目,但不带引号:$trimmedvals = array();foreach($vals as $key => $value) {$value=trim($value, "'");$trimmedvals[] = $value;}
打开App,查看更多内容
随时随地看视频慕课网APP