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