将复选框的内容存入数据库,如何提交检索效率

andyzsy 2009-09-08 10:30:25
现有一个选择项,比如“大家喜欢的编程语言”,有5个可选项,比如 java , c, php ,c++ ,vc 。

如果这个选择项是单选的话,那很简单,把选项对应的序号,比如1-5,写入数据库,数据表的字段也可以设置成int,并且加上索引,这样检索的速度会很快。

但如果这个选项是多选的话,怎么处理呢?
最常规的做法,是把选中的多个项目用分隔符相连,写入数据库。
如下 写入的内容是
“,1,3,”
“,2,3,”
“,1,2,3,”
“,2,3,5”

等等


这样数据表的字段就不能是int了,必须是char了。
并且在检索所有喜欢php的人 的sql 只能用
字段 like '%,2,%' 了

这样的效率肯定不高。

请问大家有没有什么好办法,对付这些把复选框数据写入数据库,然后做检索的!!

谢谢!!!
...全文
153 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
andyzsy 2009-09-09
  • 打赏
  • 举报
回复
谢谢 zhongqixing1104 的回复

关键是我有多个复选框,并且供选择的内容不定,不方便设置成数据库字段
andyzsy 2009-09-09
  • 打赏
  • 举报
回复
谢谢上面的兄弟姐妹们,你们说的这个方法不错,
如果userid=100 的人 选择了 c 和 php
我就在数据库里面写入
insert into aaa (userid,item) values ('100','2');
insert into aaa (userid,item) values ('100','3');

两条记录,这样会非常方便的找到喜欢php的所有人的id。

这个办法我也想到了,但现在还有个棘手的问题,就是,我录入数据库时,不止这一个复选框,还有几个复选框.比如,还有一个选择,大家喜欢的度假地,也是多选 北京 上海 杭州 西藏 新疆。


我现在数据库想搜索 喜欢杭州和php的人
我不可能在数据库里面存入n*m条记录啊


大家多讨论讨论啊,
谢谢。

主要是解决数据库的效率问题!!
zhongqixing1104 2009-09-09
  • 打赏
  • 举报
回复
java , c, php ,c++ ,vc 一个插入一列,哪个选中值就置为1,否则为0,,检索喜欢php的只要针对php那列就行了。
阿_布 2009-09-09
  • 打赏
  • 举报
回复
你也可以把选中的多个项按几条记录插入数据库。
gzx287253268 2009-09-09
  • 打赏
  • 举报
回复
把喜欢的编程语言分成多列放到SQL中???
gzx287253268 2009-09-09
  • 打赏
  • 举报
回复
关注!
littlegang 2009-09-09
  • 打赏
  • 举报
回复
实际上,当选项×人员 数量不是很大的时候

使用一个选项一条数据库记录 是常规做法

lz说的n*m 不会很大的吧,100w 了不起了吧
littlegang 2009-09-09
  • 打赏
  • 举报
回复
如果说,你的选择项记录时只需要使用序号表示,(也就意味着不会或者几乎不会去改动选项)
那么,可以这样:

假设选项是 1北京 2上海 3杭州 4西藏 5新疆
选择的是 1、3 数据库字段记录field时,'10300';
选择 2、3、5 ,记录成 '02305';

查询选择了 4西藏的,sql server中就是 substring(filed, 4, 1) = '4'

效率相对于使用like要高一点

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧