【问题标题】:is it possible to post two datas in one column in mysql database? [closed]是否可以在mysql数据库的一列中发布两个数据? [关闭]
【发布时间】:2019-11-13 07:43:33
【问题描述】:

我想要做的是我想在一个表中发布两个数据,但我不知道这是否可能。有什么方法可以让一列同时处理两个或更多数据?

Here is the modal

例如,我需要两台显示器用于我的设备。但从我从数据库中可以看到,只有第一个字段被记录,而不是添加的字段。如您所见,我有一个小功能,可以在其中添加和删除项目可以有多个或不存在的类别中的字段。

Here is my table that I want to send the datas in

【问题讨论】:

  • 正确的方式是多个表,因为您正在尝试建立多对多关系 (dzone.com/articles/…)。我会建议你。没有正常的方法可以在一列中存储多个信息。
  • 好的,谢谢,我研究一下这个。非常感谢
  • 例如对于监视器:您有一个表monitors 存储所有监视器和一个表system_units(您现有的表)。现在您需要另一个名为(例如)system_unit_monitors 的表。在那里您存储系统单元表和监视器表的 id 以将其相互连接。
  • 哦,原来是三人桌,我现在有个好主意,谢谢先生。

标签: php json ajax codeigniter


【解决方案1】:

您应该真正研究一下数据库规范化。 使用您当前的表结构,没有有效的方法来满足您的需求(因为您只有一个字段用于存储每种类型的组件。 一种解决方法是将可能包含多个用户选择的每个字段转换为 JSON 类型并将它们存储在那里。 (只需构建一个$monitors 数组,然后将其转换为json(在插入之前使用json_encode($monitors)。这虽然可行,但在效率和可索引性/可搜索性方面存在一些缺点

正如我之前所说,您真正需要的是规范化您的表格。

您应该有一个“数据透视”表(我们称之为“程序集”)和单独的组件表(您可以随意称呼它们,但也可以是“监视器”、“cpus”、“内存”等)。 组装新设备时,您将创建一个新的“组件”并将组件插入各自的表中,并参考主“组件”表 通过这样做,您可以让一个程序集引用“监视器”表中的多个条目,因为这种结构允许建立“一对多”关系

我强烈建议您进行标准化。维基百科可能是一个很好的起点HERE

可以通过示例找到更深入的解释HERE

【讨论】:

  • 谢谢,我试过这样做'monitor'=>json_encode(implode(",", $this->input->post('monitor'))),,现在它保存为一列中的两个数据。现在我插入的列的数据类型,我是否必须将其更改为 JSON 数据类型?因为我现在将它设置为整数并且工作正常。谢谢楼主回答
  • 没有看到你的代码很难猜出你做了什么以及你设法实现了什么。
【解决方案2】:

您可以将 json 对象存储在您可以访问的 json 数据类型和应用程序级别

【讨论】:

  • 我对json不是很熟悉抱歉
  • 不是一个好主意,因为它缺乏可索引性并且不符合任何正常形式(请参阅:database normalization)。另外,当您需要将数据存储为 JSON 时(是的,有正当理由有时存储 JSON 对象)你应该使用 JSON 数据类型,而不是 VARCHAR
  • 真的要改成JSON吗?谢谢回答
  • 如果您打算存储为json 数据类型,那么可以。否则,您可能会遇到数据在插入时被截断。此外,虽然从数据库中检索 json 后解析它会更有效,但使用 json 数据类型将允许使用纯 vanilla SQL 进行一些高级查询。我宁愿建议您研究数据库规范化(请参阅上面的答案)。以后可以省去很多性能上的麻烦
猜你喜欢
  • 2011-06-03
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 2016-04-12
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
相关资源
最近更新 更多