在MYSQL数据库上更新base64_encode()序列化数组?

时间:2012-01-19 07:53:10

标签: php mysql arrays

保存base64_encode()serized数组后

我现在有一个如何更新数据的问题

Array
(
    [dates] => Array
        (
            [0] => 2012-01-18
            [1] => 2012-02-18
            [2] => 2012-03-18
            [3] => 2012-04-18
            [4] => 2012-05-18
        )

    [amount] => Array
        (
            [0] => 2000
            [1] => 2000
            [2] => 2000
            [3] => 2000
            [4] => 2000
        )

    [deposit] => Array
        (
            [0] => 0
            [1] => 0
            [2] => 0
            [3] => 0
            [4] => 0
        )

)

例如我想更新[deposit][2] [dates][2] 2012-03-18

的价值

我不知道如何更新base64_encode()serized数组,这有可能吗?

- >在听取专家回答后,我确实用Col. Shrapnel建议改变了我的数据库结构,非常感谢你们所有的回复

2 个答案:

答案 0 :(得分:2)

不要使用任何编码,序列化方法存储频繁更新的数据。您实际上是以编码形式存储数组,它不是序列化的。

base64编码数组会遇到更多问题,您无法轻易地以原始形式检索它们。 base64_decode会将字符串返回给您。

如果返回的字符串是有效的数组语法,您仍然可以使用eval将其转换回数组。但是,我不建议使用这种方法。

如果需要在数据库中存储数组或对象,请使用serialize方法,在检索数组时,对象可以使用unserialize方法。

答案 1 :(得分:0)

这就是为什么在数据库中存储base64编码的序列化数据非常糟糕

您必须重新设计数据库,删除base64_encode和序列化数据 使用base64和数据库绝对没有意义,将序列化数据存储在数据库中就像修补一个带有石锤的电子设备。

数据库和古代羊皮纸卷轴之间的主要区别在于让个人可以访问任何信息,并且使用石器时代的方式存储数据,完全破坏了这一目的。请教育自己并学习使用数据库的正确方法。

数据库本身是您示例中数据结构的完美存储。您只需添加另一个包含字段dateamountdepositrecord_id的表格,并将该表格链接到当前包含该base64编码数组的表格。