我有一个表单要填写哪个有几个输入文件和20个复选框我的问题是如何组织mysql中所选复选框的记录以及用php搜索它们的最佳方法是什么。你能举个例子吗?
答案 0 :(得分:3)
MySQL是一个关系数据库,为什么要存储所有这些字符串?
这样的事情:
假设您的复选框水平放置。所以在数据库中这样对待它们是相当直观的。假设您的表单如下:
您喜欢什么样的食物(可能有多个答案)?
O Pizza O Pasta O Sushi O Salad
假设有人喜欢除了寿司以外的所有东西。其他人可能只喜欢寿司
因此,数据库中的结果表可能如下所示:
id(PK) user question col answer
1 someone 1 1 1
2 someone 1 2 1
3 someone 1 3 0
4 someone 1 4 1
5 someoneelse 1 3 1
其中answer是一些标志,当选中该框时为1,如果不是则为0。
我只是猜测你的意思就像每个人一样,所以如果你能更准确地问一下,也许我可以给出更好的答案。
答案 1 :(得分:0)
您可以使用单个BIGINT字段,让每个位代表属性的一个特征。
假设你定义属性如下
1 = furnished (000001b)
2 = with garage (000010b)
4 = new construction (000100b)
8 = ... (001000b)
16 = ..... (010000b)
因此,如果字段的第一位为1,则表示属性已提供,如果第3位为1,则表示它是新构造,依此类推。
使用按位运算符检查每个特征,即
SELECT * FROM property WHERE characterization & 2
将返回带车库的属性。类似地
SELECT * FROM property WHERE characterization & 5
将返回属于新结构的属性并且也提供(嗯......你明白了:-))。
请记住,BIGINT是64位,因此在同一个字段中不能有超过64种不同的特征。
答案 2 :(得分:-1)
如果他们不在不同的组但有很多选项,那么您可以将它们存储在类似| option1:yes | option2:no | ....的字符串中,您可以轻松查询不同的选项,如WHERE选项LIKE'% | option1:yes |%',或类似的东西。