这对我来说是一个难以理解的问题,我可能会以完全错误的方式解决这个问题。
我在数据库中存储了一组选项,其中每个选项都是自己的列。但是,用户可以更改选项的数量,因此我需要一种允许PHP始终选择所有选项的方法。
假设我有以下列:options_dialog_1,options_dialog_2,options_dialog_3,options_dialog_4
可能会有不同数量的这些对话框选项列,例如,可以添加另一个名为options_dialog_5的列。
如何根据列名格式选择所有对话框选项列?
答案 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 design或maybe 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获取更多好处。