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

标签 php mysql checkbox

我正在尝试将发布的 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/

相关文章:

php - 在 PHP 中循环 ul

在 PDF 中选中 PHP mPDF 复选框

css - 在移动设备上查看时缺少自定义 CSS 复选框边距

php - 如何将删除和编辑功能添加到我的 HTML 表中,该表中充满了来 self 的 MySQL 数据库的信息?

PHP 获取变量以等于 switch 的值

php - 用户 'root' @'localhost' 的访问被拒绝 - Laravel

javascript - 在更改 div 内的任何复选框时触发一个函数

PHP 错误抑制被忽略

mysql - 如何处理 MySQL 过程和函数

mysql - ERROR 1805 (HY000) : Column count of mysql. 用户错误。预期 43,发现 45。该表可能已损坏