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

2022-08-30 07:25:32

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


答案 1

我有一个代码版本给你。它还从值中去除引号。

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;
}

答案 2

您可以通过按如下方式查询来获取这些值:

SELECT SUBSTRING(COLUMN_TYPE,5)
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA='databasename' 
    AND TABLE_NAME='tablename'
    AND COLUMN_NAME='columnname'

从那里,您需要将其转换为数组:

  • 如果你是懒惰的,直接将其评估为数组(尽管MySQL的单引号转义可能不兼容),或者
  • $options_array = str_getcsv($options, ',', “'”) 可能有效(如果您更改子字符串以跳过开始和结束括号),或者
  • 正则表达式

推荐