我正在尝试将发布的 Web 表单中的数据存储在 MySQL 数据库中。
通常,通过简单的文本或数字输入,每个输入都有一个与特定问题相关的 ID,因此每个答案都会在“答案”表中创建一条新记录
例如
<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>
给我一个名为 checkboxes 的数组,我无法直接将其存储在数据库中。
Following the advise of others on SO我计划将数组内爆成一个字符串和故事,然后在引用它时再次爆炸它。
我有两个问题:
1)这对我来说感觉是不好的做法,因为它使我的数据非规范化,但我想不出另一种方法来做到这一点(存储的答案对于用户和问题 ID 来说是唯一的 - 因此存储每个复选框针对相同问题 ID 的值会破坏网站的其他部分)
2) 内爆数组时使用什么好的定界符 - 是否有一个我应该在 MySQL 中避免使用的字符列表以避免混淆?
最佳答案
如果已知您的一组答案仅是字母,那么逗号就足够了。如果没有,请使用 serialize()
函数将值数组存储为字符串并将其存储在 MySQL 中。
我同意非规范化有点奇怪。在不了解有关您的应用程序的更多信息的情况下,我很想添加一个联接表(user_id、question_id、answer)来存储每个用户的多个答案。
关于php - 在 MySQL 数据库中存储复选框数据时使用分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20203715/