【发布时间】:2013-10-24 18:24:15
【问题描述】:
我已经设置了一个表,其中一个字段是集合类型 - set('1','2','3','4','5')。
有没有一种方法可以将集合类型数据下拉到网页上的表单中 - 就像您在更新记录时所做的那样,您可以在其中运行查询以从表中选择某些数据并将其下拉到您的更新表格。但是,与其拉下插入的数据——你能拉下设置字段时输入的集合类型数据吗?
【问题讨论】:
我已经设置了一个表,其中一个字段是集合类型 - set('1','2','3','4','5')。
有没有一种方法可以将集合类型数据下拉到网页上的表单中 - 就像您在更新记录时所做的那样,您可以在其中运行查询以从表中选择某些数据并将其下拉到您的更新表格。但是,与其拉下插入的数据——你能拉下设置字段时输入的集合类型数据吗?
【问题讨论】:
您将需要查询 information_schema 表,然后使用 PHP 解析该字段(恕我直言,这应该是微不足道的)
SELECT column_type
FROM information_schema.columns
WHERE TABLE_SCHEMA='your_database'
AND TABLE_NAME = 'your_table'
AND COLUMN_NAME = 'your_column'
结果应该是这样的:set('1','2','3','4','5')
【讨论】:
虽然他专门写了关于ENUM,但Chris Komlenic 的文章8 Reasons Why MySQL's ENUM Data Type Is Evil 同样适用于SET。特别是:
4. 获取不同 ENUM 成员的列表很麻烦。
一个非常常见的需求是使用数据库中的可能值填充选择框或下拉列表。像这样:
选择颜色:
[ select box ]如果这些值存储在名为“colors”的引用表中,您只需要:
SELECT * FROM colors...然后可以将其解析出来以动态生成下拉列表。您可以在参考表中添加或更改颜色,您的性感订单表格将自动更新。太棒了。现在考虑邪恶的 ENUM:如何提取成员列表?您可以在表中的 ENUM 列中查询 DISTINCT 值,但这只会返回实际使用并存在于表中的值,不一定是所有可能的值。您可以查询 INFORMATION_SCHEMA 并使用脚本语言将它们从查询结果中解析出来,但这不必要地复杂。事实上,我不知道有什么优雅的、纯 SQL 的方法来提取 ENUM 列的成员列表。
【讨论】: