php - 关于使用定界符将值存储到 MYSQL 数据库的方法的建议

标签 php mysql arrays

<分区>

我的订单表中有 2 个字段。产品名称和产品级别。

例如电梯 A,电梯 A 将到达 1、2、3 层。电梯 B 将到达 4、5、6 层

我想使用分隔符来存储产品名称和产品级别中的值。

如何以更容易插入值和检索值并以表格格式显示的方式存储它们。

最佳答案

简短的回答:不,你不想这样做。永远不要在一列中存储多个值。

相反,您应该在数据库中存储六个不同的行:

 lift   level
   A       1
   A       2
   A       3
   B       4
   B       5
   B       6

这样可以很容易地存储和检索行。

长答案:数据库引擎旨在能够快速查找和提供信息。其中的关键因素之一是索引。

将数据库索引想象成电话簿。例如,如果您想查找名称“Flintstone”,首先您会跳到“F”部分,然后查找“Fl”,然后是“Fli”等。数据库索引执行相同的操作。

现在,按照相同的示例,如果您想查找包含字符“lint”的每个人的名字怎么办?您不能使用该索引,因为虽然可能有一个名称“Flintstone”,但很可能有一个“Clinton”,也可能有一个“Splinter”。您唯一的办法是查看每个名称以尝试找到您的字符串。

后一个示例正是您通过在单个列中存储值“1,2,3”(或“1;2;3”甚至“123”)而最终得到的结果。如果您想知道哪个电梯与级别 2 相匹配,您必须先提取值“1,2,3”,然后在内部查找 2 的匹配项,才能做到这一点。

这只会在连接开始发挥作用并且每个级别都有更多信息时变得更加困难。例如,如果您有一个表“level_names”,其中存储了每个级别的名称。如果您有“1,2,3”模式,当连接到该表时您希望结果行是什么? “A”、“1,2,3”、“第一、第二、第三”?现在,如果名称包含逗号怎么办?您将让自己陷入解析噩梦,并在应用程序中执行比应有要求更多的繁重工作(数据库引擎,无论它们可以还是不能 native 这样做,真的不是为这种字符串/输出操作而设计的)

关于php - 关于使用定界符将值存储到 MYSQL 数据库的方法的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21899396/

相关文章:

php - 在 Google App Engine 中连接到 Google Cloud SQL

php - html选择多项选择输入,将它们存储在mysql db中并搜索匹配项

mysql - 为什么这个 Joomla 查询这么慢?

mysql - 无法使用 ssl 数据库用户访问 mediawiki 网站

javascript - 使用 Viewbag 数据创建 Javascript 对象

php - 创建带有选项卡的 HTML/CSS/PHP 框架,带有单独的选项卡图像

php - jQuery ajax 调用后将 SQL 数据返回 JavaScript

PHP curl : detect "unable to get local issuer certificate" error

java - 如何让我的程序接受任意数量的数组而不是一组?

java - 创建二维数组然后将其写入文件的困难 (Java)