在MySQL数据库中存储复选框数据时使用分隔符

时间:2013-11-25 21:29:02

标签: php mysql checkbox

我正在尝试将已发布的网络表单中的数据存储在MySQL数据库中。

通常,通过简单的文本或数字输入,每个输入都有一个与特定问题相关的ID,因此每个答案在表“答案”中创建一个新记录

e.g。

<input type="text" value="hello" id="qid_101" name="q_101">

当发布此消息时,我使用php来删除qid号并将其存储在该值中。

但是,当复选框组已发布数据时,结果是一个数组,即

<div class="checkboxes">
  <div>
    <input   type="checkbox" value="A " name="checkboxes[]" />
    <span class="inline">a</span>
  </div>
  <div>
    <input   type="checkbox" value="B" name="checkboxes[]" />
    <span class="inline">b</span>
  </div>
  <div>
    <input   type="checkbox" value="C" name="checkboxes[]" />
    <span class="inline">c</span>
  </div>
</div>

给我一​​个名为复选框的数组,我无法直接存储在数据库中。

Following the advise of others on SO我打算将数组内爆成一个字符串和故事,然后在引用它时再次爆炸。

我有两个问题:

1)这对我来说感觉不好,因为它正在对我的数据进行非规范化,但我想不出另一种方法(存储的答案对于用户而言是唯一的,而问题ID - 所以存储每个复选框针对相同问题ID的值会破坏网站的其他部分)

2)在插入数组时使用什么是好的分隔符 - 是否有一个字符列表我应该避免使用MySQL来避免混淆?

1 个答案:

答案 0 :(得分:1)

如果您知道的答案集是,例如,只有alpha,则逗号就足够了。如果没有,请使用serialize()函数将值数组存储为字符串并将其存储在MySQL中。

我同意非正规化有点不稳定。在不了解您的应用程序的情况下,我很想添加一个连接表(user_id,question_id,answer)来为每个用户存储多个答案。