【发布时间】:2011-08-02 12:39:40
【问题描述】:
我的 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?
【问题讨论】:
标签: 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?
【问题讨论】:
标签: php mysql serialization
创建一个包含main_id 和picture 的链接表,并将您的图像名称存储在其中。
因此,您将拥有对它们的不同访问权限。
【讨论】:
您必须从数据库中获取值,对其进行反序列化,删除元素,对其进行序列化并再次保存。
$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 = ...。
【讨论】:
理想情况下你需要
【讨论】:
由于您将其存储在 VARCHAR 字段中,并且它是 PHP 序列化数组,您可能希望将其从数据库中提取出来,反序列化,然后重新更新该字段。您不应该指望 MySQL 来修改 PHP 的特定信息,因为……这不是它的用途。
【讨论】: