Php 如何在MYSQL数据库的一个字段中存储多个字段

Php 如何在MYSQL数据库的一个字段中存储多个字段,php,mysql,contact-form,Php,Mysql,Contact Form,如果这是一个愚蠢的问题,我很抱歉,但我对这个问题还不熟悉。我想将所有客户不同联系方式中的所有信息存储在数据库中,以便他们以后检索信息。每个联系人表单都有不同数量的字段。理想情况下,我会将所有这些信息存储在一个MYSQL表中,但正如我所说,每个客户的联系人表单都有不同数量的字段 我正在考虑创建一个包含以下字段的数据库 ID、customerID、日期时间、数据 数据将是联系人表单的html。然而,我相信这不是最好的做法。此外,它不允许我向客户提供一个下载选项,以csv或类似方式下载他们的所有联系方

如果这是一个愚蠢的问题,我很抱歉,但我对这个问题还不熟悉。我想将所有客户不同联系方式中的所有信息存储在数据库中,以便他们以后检索信息。每个联系人表单都有不同数量的字段。理想情况下,我会将所有这些信息存储在一个MYSQL表中,但正如我所说,每个客户的联系人表单都有不同数量的字段

我正在考虑创建一个包含以下字段的数据库 ID、customerID、日期时间、数据 数据将是联系人表单的html。然而,我相信这不是最好的做法。此外,它不允许我向客户提供一个下载选项,以csv或类似方式下载他们的所有联系方式。 我也不希望每个客户都有一个不同的表,我确信有一个带有“field1”、“field2”、“field3”等的表也不是很好。
有什么想法吗?

如果你不需要关系,那就好了。你不可能很容易地查询它

您可以使用键链接回表单和字段,将答案存储在另一个表中


或者使用像MongDB这样的KeyValue存储类型DB,您可以存储所有数据,而不必担心模式

创建另一个名为user\u data的表。在其中,有:

id, user_id, data
然后,如果他们用10个字段填写表单,您可以在此表中输入10个条目。当您为用户提取数据时,只需从user_id=其id的user_数据表中提取任何数据

如果您需要更多信息,还可以添加“field_name”字段或其他内容:

id, user_data, field_name, data

您可以使用MySQL数据库为所需的信息建立一个模式,使许多表相互关联

下面是关于数据库设计的另一个讨论:

如果您必须只有一个表,那么我要提到的另一个选择是自动创建ID,然后使字段成为非必需字段。这样,当客户先填写一张表格,再填写另一张表格时,就不会把你搞砸了。然后可以将该ID存储为会话变量,并将其重新用于数据库的不同INSERT语句


您可以为客户创建一个下载功能,该功能将以所需格式输出查询您的表,然后生成文件。

以这种方式使用数据列会破坏使用RDBMS的目的。有很多用例,因此采用了NoSQL解决方案。但是,您要注意权衡。对于以
field1
field2
作为列的表,ExpressionEngine将此模式用于其weblog自定义字段存储,而且,这是一种高效的实现。我同意,但我不太明白如何在这种情况下实现关系数据库。如果我有100多个具有不同联系方式的客户,我不希望数据库中有100多个表。这将很难管理。而且,正如我在下面的一篇评论中所说,如果这些客户中的一些更改了他们数据库中字段的数量,这将意味着更多的表!如果您想经常查询有问题的数据,那么应该将其放入适当的模式中。否则,存储xml blob可能是一种可以接受的折衷方案。你甚至可以质疑它(尽管不可避免地没有效率):@ross-也许这就是前进的方向。然而,我需要相当多的领域只是为了确保!如果客户想要一个包含80个字段的很长的联系表单,我可能需要回到绘图板上!我应该在哪里为客户的联系表单存储这些字段的标题,如果这些字段以后更改会发生什么?感谢您的快速响应,看起来我需要了解更多关于MYSQL的信息。我将浏览您提供的链接中提供的资源。我不太明白你说的数据库有模式是什么意思。我想要一个表的原因是它更容易管理和组合简单的MYSQL查询。我同意将答案存储在一个表中会使查询联系人数据变得困难。我不确定如何将这些信息存储在另一个表中会更有用,因为我仍然将其存储在一个字段中。除非我错了,否则选择将所有信息存储在一个表中,或者每个联系人表单存储一个表。另一个问题是,客户是否希望在其联系人表单中使用不同的字段。那会把事情搞得一团糟不是吗?!每个字段都有一个键。通常是存储在“名称”属性中的内容。因此,您可以将每个字段结果存储在自己的行中,并使用返回表单表的键。这个表应该是像form\u key,field\u key,field\u value噢,好的,这很有意义。这可能意味着很多领域。拥有70多个字段有什么问题吗,以防我的客户想要这么多?!您将有70行值,但它应该可以正常工作。好的,足够公平!顺便问一下,你所说的“KeyValue存储类型DB-like-MongDB”是什么意思?