在 WordPress post_meta
数组中遇到一些问题,它在数据库中发送错误的详细信息,所以我想在数据库中更改update_post_meta
的结果,现在我在post meta下面使用:
update_post_meta($post_id, '_wpsc_vendors', array(19,'enabled',true,rate,30 ));
生成此后元键和值:
key: _wpsc_vendors
value: a:5:{i:0;i:19;i:1;s:7:"enabled";i:2;b:1;i:3;s:4:"rate";i:4;i:30;}
现在我想在数据库中更改结果值:
a:1:{i:19;a:2:{s:7:"enabled";s:4:"true";s:4:"rate";s:2:"30";}}
答案 0 :(得分:3)
数据:
array(19,'enabled',true,rate,30 )
WordPress的serialized何时转换为以下内容:
a:5:{i:0;i:19;i:1;s:7:"enabled";i:2;b:1;i:3;s:4:"rate";i:4;i:30;}
含义:
a:5:是一个包含5个项目的数组
i:0; i:19; 是第一个索引为0“i:0”的元素,值为整数19
i:1; s:7:“启用”; 如果索引为1的元素,带有7个字符的字符串“已启用”
......等等
您想要的序列化值似乎无效:
一个:1:I {:19; A:2:{S:7: “使能”; S:4: “真”; S:4: “速率”,S:2: “30”;} }
也许这会对您有所帮助(使用序列化PHP函数进行测试):
$b = array('19'=>array("enabled","true","rate","30"));
echo serialize($b);
// Prints:
a:1:{i:19;a:4:{i:0;s:7:"enabled";i:1;s:4:"true";i:2;s:4:"rate";i:3;s:2:"30";}}
如果要直接在表中存储/更新值,可以执行以下操作:
global $wpdb;
$sql = "UPDATE $wpdb->postmeta SET meta_value = '$meta_value' WHERE meta_key = '_wpsc_vendors' AND post_id = $post_id";
$wpdb->query($sql);
但我不建议将手动修改的数据存储为序列化,或直接保存到postmeta表而不是使用update_post_meta函数。