wp数据库将元数据更改为错误的值

时间:2016-02-10 13:32:57

标签: php mysql wordpress

我试图将其添加到wordpress数据库:

add_post_meta($attach_id_song, "playlist",'a:1:{i:0;a:19:{s:5:"title";s:26:'. $song_title .';s:3:"mp3";s:89:'. $wp_upload_dir['url'] .';s:7:"radioip";s:0:"";s:9:"radioport";s:0:"";s:11:"buy_title_a";s:0:"";s:10:"buy_icon_a";s:14:"cloud-download";s:10:"buy_link_a";s:0:"";s:11:"buy_title_b";s:0:"";s:10:"buy_icon_b";s:14:"cloud-download";s:10:"buy_link_b";s:0:"";s:11:"buy_title_c";s:0:"";s:10:"buy_icon_c";s:14:"cloud-download";s:10:"buy_link_c";s:0:"";s:11:"buy_title_d";s:0:"";s:10:"buy_icon_d";s:14:"cloud-download";s:10:"buy_link_d";s:0:"";s:10:"buy_custom";s:0:"";s:11:"lyric_title";s:0:"";s:5:"lyric";s:0:"";}}}');

但添加后我会收到以下错误:

  

警告:为foreach()提供的参数无效   /home/sales/domains/lilopel.com/public_html/wouter/wordpress/wp-content/themes/remix/single-songs.php   第48行

  

警告:为foreach()提供的参数无效   /home/sales/domains/lilopel.com/public_html/wouter/wordpress/wp-content/themes/remix/single-songs.php   在第418行

当我查看数据库时,我看到元数据已更改为:

s:618:"a:1:{i:0;a:19:{s:5:"title";s:26:Javad Bayat  - Gharibaneh ;s:3:"mp3";s:89:http://wouter.lilopel.com/wordpress/wp-content/uploads/2016/02;s:7:"radioip";s:0:"";s:9:"radioport";s:0:"";s:11:"buy_title_a";s:0:"";s:10:"buy_icon_a";s:14:"cloud-download";s:10:"buy_link_a";s:0:"";s:11:"buy_title_b";s:0:"";s:10:"buy_icon_b";s:14:"cloud-download";s:10:"buy_link_b";s:0:"";s:11:"buy_title_c";s:0:"";s:10:"buy_icon_c";s:14:"cloud-download";s:10:"buy_link_c";s:0:"";s:11:"buy_title_d";s:0:"";s:10:"buy_icon_d";s:14:"cloud-download";s:10:"buy_link_d";s:0:"";s:10:"buy_custom";s:0:"";s:11:"lyric_title";s:0:"";s:5:"lyric";s:0:"";}}}";

任何想法如何解决这个问题

2 个答案:

答案 0 :(得分:0)

使用{}保存在Wpdb中的字符串似乎是由wordpress自动处理的,你不应该手动插入任何带编码的字符串。尝试在用户元表中插入具有类似格式的参数的字符串时遇到同样的问题。

我最终使用每个属性的特定函数更新数据(例如$ user-> set_role()),而不是在表中添加字符串。那么,对你来说:

  1. 尝试查找是否有通过其他方式添加此元数据的方法。你在更新什么样的对象?一首歌?尝试通过它的id获取对象并查看文档(插件的Wordpress API?),如果有任何函数分别更新对象标题,链接等,而不必像数据库中那样提供硬编码字符串< / p>

  2. 如果这不起作用,并且如果您没有使用以这种格式存储歌曲的插件,并且您可以自由决定存储的歌曲数据的结构: 拆分元数据并将每个属性分别添加到postmeta表中。然后,使用update_post_meta()单独添加/更新每个属性。

  3. 希望我能帮忙

答案 1 :(得分:0)

应该使用数组而不是字符串:

https://codex.wordpress.org/Function_Reference/add_post_meta

WP会将数组转换为格式正确的字符串。