首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将复选框值存储在MySQL数据库中,然后检索它们是否已设置...最好的方法是什么?

将复选框值存储在MySQL数据库中,然后检索它们是否已设置...最好的方法是什么?
EN

Stack Overflow用户
提问于 2010-02-25 15:49:52
回答 3查看 2.1K关注 0票数 1

我有一个表单,用户可以提交网站,并说如果他们在不同的浏览器工作。目前,它看起来是这样的:

代码语言:javascript
复制
<input type=checkbox name="browsers[]"  value="IE6"/>Internet Explorer 6<br/> 

<input type=checkbox name="browsers[]"  value="IE7"/>Internet Explorer 7<br/> 
<input type=checkbox name="browsers[]"  value="IE8" checked="checked"/>Internet Explorer 8<br/> <br/>
<input type=checkbox name="browsers[]"  value="FF2" checked="checked"/>Firefox 2<br/> 
<input type=checkbox name="browsers[]"  value="FF3" checked="checked"/>Firefox 3<br/> <br/>
<input type=checkbox name="browsers[]"  value="SA3" checked="checked"/>Safari 3<br/> 
<input type=checkbox name="browsers[]"  value="SA4" checked="checked"/>Safari 4<br/> <br/>
<input type=checkbox name="browsers[]"  value="CHR" checked="checked"/>Chrome<br/>  <br/>
<input type=checkbox name="browsers[]"  value="OPE" checked="checked"/>Opera<br/>  <br/>
<input type=checkbox name="browsers[]"  value="OTH" />Other Browsers<br/>  <br/>

我想知道的是,在数据库中存储复选框值的最有效方法是什么?当用户在我的网站上浏览该网站的页面时,我希望它查询数据库并返回与其兼容的网站。目前,我正在考虑这样做:

代码语言:javascript
复制
<?php if (!$browsers['FF2'] = NULL) {
                //(Insert into field named 'FF2')

            } else {
                //(Keep field named 'FF2' as NULL)
            } ?>

然后,当访问站点的页面时,它只会检查每个数据库列(FF2、FF3、SA4等)。查看该值是否不为NULL。如果不是,它将回显‘兼容FF2’等。

这让我觉得有点不合逻辑。每个浏览器都有一个单独的专栏似乎有点可笑--我不知道这是我的怀疑,还是这真的是最简单的方式。有没有人能推荐一些其他的方法?

谢谢!

杰克

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-25 15:55:14

为了提供灵活性,我会使用many-to-many关系。

因此,例如,有一个包含browserId和websiteId foreign keys的支持表,这意味着对应于websiteId的网站支持对应于browserId的浏览器。然后显然有浏览器和网站表,其中包含ids和其他所需信息。

票数 3
EN

Stack Overflow用户

发布于 2010-02-25 15:56:50

你问了很多问题,所以我来回答这个问题:

“我想知道的是,在数据库中存储复选框值的最有效方法是什么?”

你可以使用MySQL的布尔值...但是,您可以通过将所有数据存储在一个变量位移位和一个长整数中来进行优化?由于MySQL的布尔值实际上是一个8位的短整型...如果你有10个真/假值,如果你使用MySQL的布尔值,那就需要80位,而实际上,你只需要10位。

第一位:在ie7中工作

第二位:在ie8中工作

...etc

票数 1
EN

Stack Overflow用户

发布于 2010-02-25 15:58:34

这取决于你认为你的选择必须改变的频率。

一般来说,拥有许多相似的字段非常简单,但存储数据的方式太灵活了。另一种选择是为可能的值创建一个表(每个值一条记录),并使用链接表将它们链接到用户记录。然而,这是更灵活、更复杂的解决方案,并且会给数据库服务器带来更多的负载。

在谷歌上搜索'One True Lookup Table‘可以获得这方面的提示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2332447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档