使用PHP和MySQL存储和检索多维数组

9

我在PHP中有一个多维数组,就像这样:

$array = array(
    "Part1" => array(
        "Subpart1" => array(0, 1),
        "Subpart2" => array(1, 0)
    ),
    "Part2" => array(0),
    "Part3" => array(0, 1, 0)
);

现在我想将这个数组存储在MySQL表中,并在另一个PHP页面上完全按照这样检索它。 我一直在尝试使用serialize()和unserialize()。
$array= serialize($array);

在另一页上,然后...
$array= $row['Array'];
$array2 = array();
$array2 = unserialize($array);

但是我似乎做错了什么,在开始时我得到了一个var_dumpbool(false),现在我得到了一个var_dumpNULL


2
只是一个小注释,你可以将你的反序列化代码从那三行简化为一行:$array2 = unserialize($row['Array']); - Jon Benedicto
4个回答

9

你的代码看起来没问题...

有一件事情可能会让你遇到麻烦,那就是如果你的列太小了 - 如果你使用VARCHAR(255),你的数据可能会被截断,并且无法反序列化。如果你添加$row['Array']的值,我可以看到它是否完整。


4
使用 TEXT 类型的列。序列化数据通常不适合 VARCHAR(255)。

1
你可以使用json encode,json_encode($array),这样你会得到一个json格式的字符串值,以便你可以存储在数据库中,并检索和执行json_decode($string, true),这样你就可以将它再次转换为一个数组。如果你不传递true参数到json_decode中,它会被转换成一个stdClass对象。

0
细节 数量 费率 金额 总金额 其他
其他金额

总计
这是我的PHP/HTML表格。 我需要将PHP的详细信息(p)、数量(q)和费率(r)存储和检索为单独的表格格式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接