php str_replace替换修改mysql数据字段序列化内容中的域名

serialize() 函数序列化后存储在数据库的值,不能通过 mysql replace 直接批量替换修改其中的内容,想批量替换序列化后的内容,可以使用 php 的 unserialize() 函数对内容进行反序列化,然后使用 str_replace() 函数替换,再 serialize() 序列化后存储进数据库。

数据库表 table_post 字段 post_meta 的值:

a:4:{s:8:"thumbnail";s:73:"http://www.tddx.net/uploads/2022/01/626086271217.jpg";}

把值里的域名改成 tddx.net,通过sql读取出上面的字段内容后,附值给 $meta,然后php代码

$result = unserialize($meta);
$replace = serialize(str_replace('http://www.tddx.net','http://tddx.net',$result));

再通过 update 语句把 $replace 存回去就可以了。

关键词: mysql php教程