将PHP数组存储在单个SQL单元中

将PHP数组存储在单个SQL单元中,php,mysql,sql,arrays,Php,Mysql,Sql,Arrays,如果在我的SQL数据库中以数组或类似的数据类型存储一个项目,并且无法找到关于该主题的满意信息,我希望存储这些成分 在PHP中,信息将存储为成分[“$id”]=true或false,其中$id表示成分 因此,对于纯面包(请注意,这大部分仍然是伪代码,因为数据输入端尚未启动) 这应该会产生类似的结果 普通面包:面粉、水、盐、酵母 我查看了ENUM和SET,但这会使添加新成分变得更加困难从主题(将PHP数组存储在单个SQL单元格中)判断,您应该序列化它。这方面有标准化的方法 $array["a"] =

如果在我的SQL数据库中以数组或类似的数据类型存储一个项目,并且无法找到关于该主题的满意信息,我希望存储这些成分

在PHP中,信息将存储为
成分[“$id”]=true或false
,其中$id表示成分

因此,对于纯面包(请注意,这大部分仍然是伪代码,因为数据输入端尚未启动)

这应该会产生类似的结果

普通面包:面粉、水、盐、酵母

我查看了ENUM和SET,但这会使添加新成分变得更加困难

从主题(将PHP数组存储在单个SQL单元格中)判断,您应该序列化它。这方面有标准化的方法

$array["a"] = "Hello";
$array["b"] = "World";
$array["c"] = "!";

$str = serialize($array);

// The contents of $str
// a:3:{s:1:"a";s:5:"Hello";s:1:"b";s:5:"World";s:1:"c";s:1:"!";}
反向使用非序列化

$unserializedString = unserialize($str);
您可以对数组和对象使用此选项

如果我的SQL db中的一个项目作为数组或类似的数据类型找不到令人满意的主题信息,我希望存储这些成分

如果序列化数据是一个面向数据库的问题的答案,那么很可能你问错了问题。您可能会将这些成分插入到一个单独的表中,使用联接检索它们。这使您的数据库更易于使用、更易于搜索和维护


也就是说;有些情况下,存储序列化字符串实际上是最可行的解决方案,但这一个似乎不是这样。

同意这一点,但主题将这个问题分了一点。是的,Berry说的:)也使数据库更小,还有一种观点认为,这会使数据更加独立于实现。如果主表中有多个值,我将如何使用联接(即纯面包有4种成分(这是最小的列表),我不需要为每种潜在成分设置一列?@HectorJamesHaddow阅读了标准化,为了你自己的利益。不,四种配料不需要四列,在另一个表中需要四行。是的,这会导致多行,但是如果您想知道哪些产品包含配料
“酵母”
,您会很高兴您已经规范了您的数据库。还有另一个带有id和配料的表,它是
的组成部分,而(row=…)配料[row[id]=row[配料]
(称为带配料的表单[$id])那么说
成分[4]=酵母
那么
如果($配料[$4]==true)
包含酵母;
否则
不包含酵母`
$unserializedString = unserialize($str);