如何更新MySQL中的序列化数据

时间:2011-04-10 15:04:18

标签: php mysql serialization

我在mySQL数据库中有这个序列化数据

a:4:{i:0;s:7:"bvl.png";i:1;s:8:"ccop.jpg";i:2;s:11:"reyborn.png";i:3;s:13:"swopgroup.jpg";}

如何更新此数据,例如我想删除ccop.jpg

4 个答案:

答案 0 :(得分:5)

您必须从数据库中获取值,对其进行反序列化,删除元素,序列化并再次保存。

$remove = "ccop.jpg";

//
// get the string from the database
//

$arr = unserialize($str);

foreach($arr as $key => $value)
  if ($value == $remove) unset($arr[$key]);

$str = serialize($arr);

//
// save the string back to the database
//

最好不要保存序列化的值列表,而是选择normalized database,只做一个简单的DELETE FROM images WHERE object_id = ...

答案 1 :(得分:5)

不要将序列化数据存储在数据库中。

创建一个由main_idpicture组成的链接表格,并将您的图片名称存储在其中 因此,您将拥有对它们的独特访问权。

答案 2 :(得分:3)

理想情况下,您需要

  • 提取它
  • 反序列化
  • 修改
  • 序列化
  • 将其写回数据库。

答案 3 :(得分:0)

由于您将它存储在VARCHAR字段中并且它是一个PHP序列化数组,您可能希望将其从数据库中取出并反序列化,然后重新更新该字段。您不应该期待MySQL修改PHP特定信息,因为这不是它的用途。