如何使db表字段动态化

时间:2013-12-05 05:55:39

标签: php mysql sql database wordpress

我正在wordpress中创建插件以联系我们表单,并且我正在根据我的要求动态创建字段(文本框,textarea等...)。所以没有固定数量的字段。我将动态创建的字段存储在我的数据库表中。

在某个项目中我可能需要创建3个字段和一些项目我可能需要创建5个字段..我的动态表单工作正常......

现在我的问题是DB。我如何创建表来存储联系我们的数据? bcz有时可能有3个字段,有时可能有3个以上的字段..

所以我的问题是如何为这个场景制作我的表架构......

建议将受到高度赞赏......

先谢谢

5 个答案:

答案 0 :(得分:1)

强烈建议不要更改表结构,性能不佳,如果删除列,可能会丢失数据。

因此,原始主题'使数据库表字段动态'是可能的,但不是一个好的计划,我们仍然有替代计划:

将动态字段存储在一个表格列

找到一种方法将动态字段组合成字符串,使用分隔符或使用json_encode工作,如果列足够长(TEXT - > MEDIUMTEXT),您可以拥有无​​限制的动态字段。

在开头

创建足够的列

显然这不如上层计划好,但它更容易理解,在这些栏目中搜索也更容易。

BTW,您是否考虑过将这些动态列转换为行?

答案 1 :(得分:0)

您需要使用数组将表单中获取的信息存储在一个表字段中。这样,问题有多少并不重要。

应该很简单看一下php数组。

答案 2 :(得分:0)

您可以在数据库表中使用单个longtext数据类型列,只需序列化表单值并存储在单个列中。

答案 3 :(得分:0)

我同意其他人的意见。动态创建数据库表很糟糕。一旦项目完成,数据库模式几乎不会改变。

一个解决方案是: 如果您有多个地址的联系人,则按如下方式创建父/子关系。也许你可以做一些类似于你情况的事情。

联系
long contactID主键
命名
addressID

地址
long addressID主键
long contactID外键
的StreetAddress
CityID
CountryID

答案 4 :(得分:-1)

我不这么认为这样做是个好主意......但我建议你这样做,因为在你的情况下这可能是有用的

你可以ALTER ...

来做

所以您可以做的是“当您在此时动态创建新字段时,只能在表格中创建新列...”/ / p>

   ALTER TABLE table_name ADD $name(Column name)  //$name may be your attribute name <input name="">

同样,当你删除字段时,可以删除表格列

   ALTER TABLE table_name DROP $name(Column name) //$name may be your attribute name 

这里我假设你已经创建了表 table_name (没有任何字段)

希望它可以帮到你