【问题标题】:Add several fields to MySQL Database向 MySQL 数据库添加几个字段
【发布时间】:2011-02-18 06:02:23
【问题描述】:

我对使用 PHP 和 MySQL 构建网站相当陌生,但我正在努力实现以下目标:

在在线注册过程中,发起人最多可以注册 20 名“战士”进行医学检测服务。每个战斗机的信息以 $_SESSION['FnumAttr'] 的形式存储在 SESSION 中,其中 num 是数字,Attr 是定义的属性(名字、姓氏等)。在注册结束时,我需要将所有输入的数据存储在 MySQL 数据库中并最终发送到其他地方。经理一次可以注册 1 到 20 名战士,任何少于 20 人的事物都不会在其单元格中包含数据(空)。

我目前正在 MySQL 中构建数据库,但如果我必须为 20 个不同的战斗机输入 20 个属性,这可能需要一整天(更不用说我必须在最后调用“INSERT INTO”)这个)。

有没有办法比逐行添加:F4_Firstname、键入文本、长度、允许 null 等更快地创建这些字段?

【问题讨论】:

  • 也许是因为我花了一整天的时间编码,但我不太明白你在做什么。也许如果您发布了您的数据库架构?
  • @Manos - 我没有数据库模式,我正在尝试构建数据库,它只会将消费者信息存储在一个定义为“测试”的表中 - 该表将容纳超过 400 个字段,其中详细说明了在系统上注册的每个人的详细信息。将其视为您孩子的足球训练营的注册表单,您必须输入他们的姓名、地址、城市、州、邮编等 - 所有这些都存储在名为“足球注册人”的同一张表中

标签: php mysql phpmyadmin navicat


【解决方案1】:

你可以使用 phpMyAdmin

【讨论】:

  • 我已经在使用 phpMyAdmin - 现在已经转移到 Navicat,因为它更快,但我仍然需要一个小时或更长时间才能将 400 多个字段输入数据库。
  • 所有数据都必须有意义吗?
  • 您能否详细说明一下 - 我不确定您在问什么。如果数据进入网站,对我们来说是有意义的,是的。我们无法确定经理是否会招收 3 名或 19 名战士/员工,因此我们必须构建包含 400 多个字段的数据库,以收集所有可能的信息并将其存储在唯一字段中,因为这些信息随后会传递到其他地方
【解决方案2】:

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

当您需要战斗机信息时,您将战斗机表与 parent_table_id 上的父表连接起来。

要加载这个新表,只需遍历您的原始数组并为您发现的任何不为空的条目发出插入语句。如果您将新表的 PK 设置为 fighter_id 和 parent_table_id 之间的连接,那么您可以直接使用输入数据中的“num”作为 fighter_id。

【讨论】:

  • 我不确定我是否遵循这里的逻辑。父表中包含哪些信息使“fggers”表有所不同?数据库原样将有 400 多列(因为 F1FirstName、F19FederationNumber 都是唯一的)。我不会像简单存储它的重要性那样提取这些信息。我只是想弄清楚如何快速连续复制列名而不必整天输入
  • 您不应该复制列名。您需要阅读关系模式的规范化。
  • @duffymo - 谢谢你的建议。我认为我有点熟悉规范化并查看了以下内容(dev.mysql.com/tech-resources/articles/…),但根据我给出的示例,我不知道这是如何应用的。唯一的关系是斗士与经理之间的关系,但在此过程的后期之前,这些信息对我来说几乎是无关紧要的。无论哪种情况,我都必须将所有战斗机存储在一个数据库中,这会导致数百列,不是吗?我之前没有提到,但是一个战士也可以自己注册,因此不会有一个“父母”
  • 可以在 Fighter 表注册时添加一行,并在适合您的用例时将外键关系添加到 Manager。在我看来,它比以往任何时候都更适用。
  • Duffymo - 我不确定这与注册有何关系。我的目标是让每条记录(每一行)代表一个注册。来自单个注册的所有信息都将以 csv 文件的形式传递给医疗办公室进行存储,因此对于我想要做的事情来说,打破表格似乎并不可行。也许我看错了?
猜你喜欢
  • 2016-01-11
  • 2019-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-17
相关资源
最近更新 更多