首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zend Mysql获取ENUM值

问Zend Mysql获取ENUM值
EN

Stack Overflow用户
提问于 2010-11-06 16:48:15
回答 6查看 3.2K关注 0票数 2

我在我的应用程序中使用Zend Framework。我想知道如何从MySQL表中的ENUM字段中获取值。

例如:我有permissions字段(ENUM('delete_admin','edit_admin'))。如何以最好的方式获取数组(‘delete_admin’,'edit_admin')?

提前谢谢你。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-03-22 19:36:38

我是这样做的:

在您的模型中放入以下内容

代码语言:javascript
复制
function getInfoTabella()
    {
        $data = $this->info(self::METADATA);
        return $data;
    }

然后使用以下命令:

代码语言:javascript
复制
$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;
票数 2
EN

Stack Overflow用户

发布于 2011-04-09 18:07:20

我是用下一种方式做的:

代码语言:javascript
复制
$metadata = $this->info(self::METADATA);
$typesString = $metadata['enum_column_name']['DATA_TYPE'];
preg_match("=\((.*)\)=is", $typesString, $parts);
$enumColumnValues = explode("','", trim($parts[1], "'"));
票数 3
EN

Stack Overflow用户

发布于 2011-07-27 23:54:08

下面是从MySQL获取可拆分字符串的方法:

代码语言:javascript
复制
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进行读访问。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4112490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档