【问题标题】:Replace enum value替换枚举值
【发布时间】:2012-09-19 03:40:01
【问题描述】:

大家好,这可能是一件非常简单的事情,但我束手无策!我有一个网站,其表单将值输入到 mysql 数据库中,所以在我的表中,我有枚举字段 '1'、'2'、'3'、'4',它们是 Mr、Miss、Mrs、Ms 的值, Dr 和另一个性别枚举值 'm','f' 分别是男性和女性。

现在的问题是,当我在我的其他页面上呼应它们时,如何将“1”替换为 Mr 和“m”替换为 Male!

这里有一些代码可以提供帮助!

    $sql = mysql_query("SELECT * FROM myMembers WHERE id='$id' LIMIT 1");

    while($row = mysql_fetch_array($sql)){

        $title = $row["title"];
        $firstname = $row["firstname"];
        $lastname = $row["lastname"];
        $gender = $row["gender"];
    }

我在这里回应:

     if ($myvar == "yes") 
        {
        $myvar = "http://www.somesite.com/public/postlead.php?field1=' . $title . '&field14=' . $gender . '&field2=' . $firstname . '&field3=' . $lastname . '';
        } else {
          $myvar = '';
        }

在此先感谢大家

【问题讨论】:

  • 我认为您的数据库设计存在缺陷,我会更改架构 - 正如您所强调的那样 - 枚举不适合这种类型的数据存储 - 我会将字段更改为 INT 并创建查找表

标签: php mysql sql


【解决方案1】:

您可以使用 SELECT...CASE

 SELECT CASE gender 
  WHEN 'F' THEN 'Female'
  WHEN 'M' THEN 'Male'
 END as gender_word , other_fields_here 
from myMembers WHERE id='$id' LIMIT 1

【讨论】:

  • 我认为应该修复 DB 架构这是一个 hack 恕我直言 :-)
【解决方案2】:

case试试吧,

SELECT (CASE gender WHEN 'Male' THEN 'M' END) as `Gender`,
       (CASE title WHEN 'Mr' THEN 1 END) as `Title`
FROM ....

【讨论】:

  • 我认为应该修复 DB 架构这是一个 hack 恕我直言 :-)
  • @AdrianCornish 在某些方面我同意。我一般不用enum呵呵
  • 我考虑过否决你和 sel 的回答,但他们并没有错 :-) 希望 OP 会接受架构更改提示
猜你喜欢
  • 1970-01-01
  • 2014-01-01
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 2010-10-06
  • 2010-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多