繁体   English   中英

在单个SQL行中存储多个值

[英]Storing multiple values in single SQL row

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

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

我想在表configuration有一个字段key和一个字段value ,但是我有多种存储值的方法:

  • 序列化一个PHP数组并将其存储在一行中,
  • 存储所有用逗号分隔的值,例如1,4,9,42
  • 具有具有相同keyvalues不同的多行。 我不知道如何使它正常工作,这将非常无法使用...

谢谢你的帮助 :)

撇开这是否一个好主意的讨论,许多人都这样做。 一种非常常见的方法是在“配置”表上具有“ blob”字段,并以JSON格式存储数据。 您将自己进行序列化和反序列化,但这没什么大不了的。

如果要将配置存储在数据库中( 不建议这样做,但是如果您有很多应用程序实例,这是有道理的)-让我们对其进行分析:

  1. 用相同的键存储多行的方法-算了吧;)

  2. 存储许多用,分隔的值-如果您需要用逗号存储值(例如: 10,000等于10,000,那么这将引起一些问题。 然后,您需要对其进行修改以存储值,例如以"封装的CSV文件中的值。

  3. 最好的主意- 存储序列化的PHP值 由于您的应用是用PHP编写的,因此这将是最好的本机方法。 使用这种方法将很容易:

    $ configValue = unserialize(getMyValueFromDb(“ myKey”)); //或在更改后保存$ configValue =“ new value”; saveMyValueToDb(serialize($ configValue));

另外-PHP serialize和反unserialize要注意转义值并正确转换它,因此您不必担心用逗号分隔的逗号分隔字符串会被explode错误地分割。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM