在单个SQL行中存储多个值

时间:2014-12-13 22:52:57

标签: php mysql serialization configuration

我正在尝试为我的应用程序建模配置表,我想就如何为配置值存储多个值发表意见。

例如,如何存储可用的语言?如何存储允许的文件扩展名等?

我希望在我的表key中有一个字段value和一个字段configuration,但我有多种方法来存储该值:

  • 序列化PHP数组并将其存储在一行中
  • 存储以逗号分隔的所有值,例如1,4,9,42
  • 拥有相同key但不同values的多行。我不知道如何才能使这个工作,它将是非常不可用的......

感谢您的帮助:)

2 个答案:

答案 0 :(得分:4)

除了讨论这是否是一个好主意之外,很多人都这样做。一个非常常见的方法是让一个' blob'一个'配置'以JSON格式表和存储您的数据。您将自己序列化并反序列化,但这没什么大不了的。

答案 1 :(得分:1)

如果您想将配置存储在数据库中(不推荐,但如果您的应用程序有很多实例,则有意义) - 让我们分析一下:

  1. 使用相同的密钥存储多行的方法 - 让我们忘掉它;)

  2. 存储由,分隔的多个值 - 如果您需要使用昏迷值存储值(例如:10,000为一万个),则会产生一些问题。然后,您需要修改它以存储像"封装的CSV文件中的值。

  3. 最好的想法 - 存储序列化的PHP值。由于您的应用程序是用PHP编写的,因此它是最好的 native 方法。使用这种方法就像:

    $ configValue =反序列化(getMyValueFromDb("的myKey&#34)); //或在更改后保存 $ configValue ="新值&#34 ;; saveMyValueToDb(序列化($ configValue));

  4. 此外 - PHP serializeunserialize会关注转义值并将其正确转换,因此您不必担心某些错误分隔字符串与{{1}错误地分开}。