2010-05-11 100 views
0

我是相当新的建设有PHP和MySQL的网站,但想实现如下:多个字段添加到MySQL数据库

在网上报名过程中,启动子是能够注册多达20个“战士”用于医疗检测服务。每个战斗机的信息以SESSION存储为$ _SESSION ['FnumAttr'],其中num是数字,Attr是被定义的属性(名字,姓氏等)。在注册结束时,我需要输入存储在MySQL DB中的所有数据,并最终在其他地方发送。一个经理可以一次注册1到20个战士,而任何少于20个的战士只会在其单元内没有数据(空)。

我目前在MySQL内部构建了数据库,但是如果我必须为20个不同的战士输入20个属性,这可能需要一整天(更不用说“INSERT INTO”调用了,我必须在所有这些)。

有没有办法创建这些字段比逐行添加并添加:F4_Firstname,键入文本,长度,允许null等等。

+0

也许这是我花了整整一天的时间编码的事实,但我不太清楚你在做什么。也许如果你发布你的数据库模式? – 2010-05-11 16:53:13

+0

@Manos - 我没有数据库模式,我试图建立数据库,因为我们说话,它会简单地将消费者信息存储在一个表中定义为“测试” - 此表将容纳超过400个字段,详细信息每个人都在系统上注册。把它看作是你孩子足球训练营的注册表格,你必须输入他们的姓名,地址,城市,州,邮编等 - 所有这些都存储在同一个表中,名为“足球注册者” – JM4 2010-05-11 16:59:10

回答

1

这看起来像是一对多的关系。而不是有20列创建一个名为“战士”,包含战斗机ID,parent_table_id和关于战斗机的信息的新表。

当您需要战斗机信息时,您可以使用parent_table_id上​​的父表加入战斗机表。

加载此新表只是循环访问您的原始数组,并为您发现的非空条目发出insert语句。如果你将新表的PK连接到fighter_id和parent_table_id之间,那么你可以直接使用输入数据中的'num'作为fighter_id。

+0

我不是我确定遵循这里的逻辑。然后,父表中包含哪些信息使得'fighers'表有任何不同?该数据库将有超过400列(因为F1FirstName,F19FederationNumber都是唯一的)。我不会将这些信息与简单存储它的重要性相提并论。我只想知道如何快速连续地复制列名,而不必整天输入 – JM4 2010-05-11 17:10:01

+0

您不应该复制列名。您需要阅读关于关系模式的规范化。 – duffymo 2010-05-11 17:22:05

+0

@duffymo - 感谢您的建议。我以为我有点熟悉的标准化,并审查了以下(http://dev.mysql.com/tech-resources/articles/intro-to-normalization.html),但没有看到这是如何适用的基础上,我有例子给出。 唯一的关系是战斗机经理,但这些信息几乎与我无关,直到后来的过程中。无论哪种情况,我都必须将所有战士存放在数据库中,这将导致数百列,不是吗? 我没有提到过,但战斗机也能够自己注册,因此不会有'父' – JM4 2010-05-11 17:44:58

0

您可以使用phpMyAdmin

+0

我已经在使用phpMyAdmin - 现在已经迁移到Navicat,因为它速度要快得多,但要花一个小时或更长的时间才能将400多个字段输入数据库。 – JM4 2010-05-11 16:50:47

+0

所有数据都必须有意义吗? – kamasheto 2010-05-11 16:55:14

+0

请你详细说明 - 我不确定你在问什么。如果数据进入网站,对我们来说是有意义的,是的。我们无法确定一位经理是否将招募3名或19名战士/员工,因此我们必须建立400多个领域的数据库,以收集所有可能的信息并将其存储在独特的领域,因为这些信息随后传递到别处 – JM4 2010-05-11 17:06:29