编辑DB值后,在实时站点上消除值

时间:2017-09-12 11:57:35

标签: php mysql wordpress

我遇到了Wordpress高级主题和MySQL数据库的问题。数据库框中的值如下所示:

a:1{i:0;a:4{s:4:"name";s:9:"Trailer";s:6:"select";s:6:"iframe";s:6:"idioma";s:2:"en";s:3:"url";s:82:"https://youtube.com/sample.mp4
";}}

当我将YouTube链接值编辑为其他内容时,此框中的整个数据会在实时Wordpress页面上消失,尽管即使在刷新后它也会在数据库中显示。我不知道为什么会发生这种情况以及如何防止它发生。

编辑: 在我尝试编辑其他值如post_title等之后,它根本不会更新实时WP页面上的值。为什么我这样做是因为我需要使用脚本轻松添加和编辑大量数据。

1 个答案:

答案 0 :(得分:0)

您显示的字符串来自PHP序列化。这是PHP将字符串化以供以后使用的一种方式。

如果要批量修改这些值,最好的办法是创建一个PHP脚本来获取数据,对其进行反序列化,直接对其创建的PHP变量进行更改,然后再次序列化以放入数据库。

如果你想直接玩这个字符串,你需要确保你小心。

更改YouTube视频网址的主要原因是因为您可能也没有更改字符串声明。

s:82:"https://youtube.com/sample.mp4";

这是无效的。它使用:分为3部分。类型:长度:值。所以它是一个长度为82的字符串,但你提供了一个30个字符的字符串。

如果您在PHP中启用NOTICE,您肯定会看到有关它的错误。

编辑:

在PHPFiddle.org上修改了一下之后,我想出了一个干净的字符串来自你给的那个,它有很多缺陷......

a:1:{i:0;a:4:{s:4:"name";s:7:"Trailer";s:6:"select";s:6:"iframe";s:6:"idioma";s:2:"en";s:3:"url";s:30:"https://youtube.com/sample.mp4";}}

请注意,我将长度值更改为2个部分,并添加了2个分号: