搜索列格式

时间:2010-07-03 12:26:18

标签: php mysql

这对我来说是一个难以理解的问题,我可能会以完全错误的方式解决这个问题。

我在数据库中存储了一组选项,其中每个选项都是自己的列。但是,用户可以更改选项的数量,因此我需要一种允许PHP始终选择所有选项的方法。

假设我有以下列:options_dialog_1,options_dialog_2,options_dialog_3,options_dialog_4

可能会有不同数量的这些对话框选项列,例如,可以添加另一个名为options_dialog_5的列。

如何根据列名格式选择所有对话框选项列?

3 个答案:

答案 0 :(得分:3)

我认为你这里有数据库设计问题;重复这样的列总是会导致麻烦。我认为你需要两个表,一个用于用户,另一个用于定义类似的选项......

USERS
   id
   name

OPTIONS
    id
    user_id
    option_dialogue_number
    option_dialogue_value

将列转换为行,这样更容易获得。

答案 1 :(得分:0)

我不确定我是否理解这个问题。你在找

吗?
SELECT * FROM options_table

像( faux SQL - 不会工作

SELECT ( SELECT column_names where column_name LIKE 'options_dialog%' ) 
FROM options_table

对我来说听起来不可行(虽然我确信it's possible不知何故)。如果您需要,请考虑refactoring the database designmaybe use a bitmask将所选选项存储在一个列中。

答案 2 :(得分:0)

Brian's answer真的,真的会在更长的时间内让你失望。但是如果你需要快速的东西和丑陋的,您可以查看“元数据字典”(存储有关所有其他表,列等的信息的表)。您可以通过第一个查询从中获取列的列表,并使用它来构建第二个列。

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='mytable' AND COLUMN_NAME LIKE 'options_dialog%'

访问manual on INFORMATION_SCHEMA获取更多好处。