Php 在mysql中输入未知数量的字段-这是最好的结构吗?

Php 在mysql中输入未知数量的字段-这是最好的结构吗?,php,mysql,database-design,entity-attribute-value,Php,Mysql,Database Design,Entity Attribute Value,我需要存储从多个表单发送的数据-有趣的是,由于这些表单将由我计划让用户访问的表单生成器创建,我不知道表单中将包含多少字段,或者用户将提交多少字段。我考虑过一种类似于以下内容的表结构(表单本身保存为php以便包含): FormId与另一个表相关,该表存储表单文件的位置等。对于include(例如下面),输入ID与页面上的输入相关 | FormId | FormType | PathToForm | DateCompleted |...etc 来自formId 1的输入“a”可能如下所示: <

我需要存储从多个表单发送的数据-有趣的是,由于这些表单将由我计划让用户访问的表单生成器创建,我不知道表单中将包含多少字段,或者用户将提交多少字段。我考虑过一种类似于以下内容的表结构(表单本身保存为php以便包含):

FormId与另一个表相关,该表存储表单文件的位置等。对于include(例如下面),输入ID与页面上的输入相关

| FormId | FormType | PathToForm | DateCompleted |...etc
来自formId 1的输入“a”可能如下所示:

<input id="a" name="a" type="text" value="example"/>
<textarea name="a" id="a"></textarea>
每个表单上的“输入”数量可能是无限的-不同表单模板上的输入每次可能具有不同的“类型”


我的问题(最后!)-这是我能做的最好的方式吗?我知道,每行存储一个表单的输出并不是很理想——但是,如果没有数百个表,并且如果我将来需要(通过“FormType”)有效地提取数据,我不确定是否还有其他方法可以进行构造。以前没有遇到过这样的事情,如果这听起来很愚蠢的话,对不起

mysql 5.7中有一些东西是为这种情况量身定做的。这个

您可以做的是将表单转换为关联数组,然后将其保存在JSON字段中


不过有几个注意事项,这个字段虽然可搜索,但搜索效率不如普通的varchar列。另外,如果您想在一个.

中使用它,mysql 5.7中有一些东西是为这种情况量身定做的。这个

您可以做的是将表单转换为关联数组,然后将其保存在JSON字段中


不过有几个注意事项,这个字段虽然可搜索,但搜索效率不如普通的varchar列。此外,如果您想在。

中使用它,我们使用的一种产品是重力表单。你可能想看看他们的数据结构:)看看EAV标签——有很多讨论。我们使用的一个这样的产品是重力表单。你可能想看看他们的数据结构:)看看EAV标签——有很多讨论。这看起来就像是一张罚单——看起来我也可以在我的表中废弃一张!注意关于搜索-足够简单,以保持我想搜索的字段现在分开。现在我需要做的就是等待我的共享主机从5.6更新到5.7!哦,你可以转投一家提供5.7:-)的公司,不管怎样,你的项目一切都很好,看起来就像是一张票——看起来我也可以在我的桌子上扔掉一张!注意关于搜索-足够简单,以保持我想搜索的字段现在分开。现在我需要做的就是等待我的共享主机从5.6更新到5.7!哦,你可以转投一家提供5.7:-)的公司,不管怎样,你的项目一切顺利
<textarea name="a" id="a"></textarea>
| FormId | FormType | InputID | InputType | LongText |   Text  | Date |
--------------------------------------------------------------------------
|   1    |     1    |    a    |    text   |   NULL   | example | NULL |
|   2    |     2    |    a    |  textarea |  example |   NULL  | NULL |