我在我的应用程序中使用Zend Framework。我想知道如何从MySQL表中的ENUM字段中获取值。
例如:我有permissions字段(ENUM('delete_admin','edit_admin'))。如何以最好的方式获取数组(‘delete_admin’,'edit_admin')?
提前谢谢你。
发布于 2011-03-22 19:36:38
我是这样做的:
在您的模型中放入以下内容
function getInfoTabella()
{
$data = $this->info(self::METADATA);
return $data;
}然后使用以下命令:
$model = new $model_name();
$description = $model->getInfoTabella();
$enum = $description[$FIELD_NAME]['DATA_TYPE'];
$inizia_enum = strpos($enum, "'");
$finisce_enum = strrpos($enum, "'");
if ($inizia_enum === false || $finisce_enum === false)
throw new Exception('errore enum database');
$finisce_enum -= $inizia_enum ;
$enum = substr($enum, $inizia_enum, $finisce_enum+1);
str_replace("'", '', $enum);
$enum = explode("," , $enum);
return $enum;发布于 2011-04-09 18:07:20
我是用下一种方式做的:
$metadata = $this->info(self::METADATA);
$typesString = $metadata['enum_column_name']['DATA_TYPE'];
preg_match("=\((.*)\)=is", $typesString, $parts);
$enumColumnValues = explode("','", trim($parts[1], "'"));发布于 2011-07-27 23:54:08
下面是从MySQL获取可拆分字符串的方法:
SELECT REPLACE(TRIM(TRAILING ')' FROM (TRIM(LEADING 'enum(' FROM c.COLUMN_TYPE))), '\'', '')
FROM information_schema.`COLUMNS` c
WHERE c.COLUMN_NAME = 'enum_col'您只需对其执行一个explode(',' $result)操作,即可获得包含枚举值的数组。
请记住,您需要对information_schema-database进行读访问。
https://stackoverflow.com/questions/4112490
复制相似问题