Php 数据库中更新后元数据的更改结果
WordPresspost\u meta数组中存在一些问题,它在数据库中发送了错误的详细信息,因此我想更改数据库中的Php 数据库中更新后元数据的更改结果,php,database,wordpress,Php,Database,Wordpress,WordPresspost\u meta数组中存在一些问题,它在数据库中发送了错误的详细信息,因此我想更改数据库中的update\u post\u meta的结果,现在我使用以下post meta: update_post_meta($post_id, '_wpsc_vendors', array(19,'enabled',true,rate,30 )); 这将生成此post元键和值: key: _wpsc_vendors value: a:5:{i:0;i:19;i:1;s:7:"enabl
update\u post\u meta
的结果,现在我使用以下post meta:
update_post_meta($post_id, '_wpsc_vendors', array(19,'enabled',true,rate,30 ));
这将生成此post元键和值:
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";}}
数据:
array(19,'enabled',true,rate,30 )
通过WordPress转换为以下内容时:
a:5:{i:0;i:19;i:1;s:7:"enabled";i:2;b:1;i:3;s:4:"rate";i:4;i: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);
意思是:
a:5:是由5项组成的数组
i:0;i:19是索引为0“i:0”的第一个元素,值为整数19
i:1;s:7:“启用”如果元素的索引为1,则字符串为7个字符“已启用”
。。。等等
所需的序列化值似乎无效:
a:1:{i:19;a:2:{s:7:“启用”;s:4:“正确”;s:4:“速率”;s:2:“30”}
也许这会对您有所帮助(使用序列化PHP函数测试):
如果要将值直接存储/更新到表中,可以执行以下操作:
a:5:{i:0;i:19;i:1;s:7:"enabled";i:2;b:1;i:3;s:4:"rate";i:4;i: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);
但我不建议将手工修改的数据存储为序列化,或者直接保存到Peta表,而不是使用UpDeaTePasyMeta函数。
< P>数据:array(19,'enabled',true,rate,30 )
通过WordPress转换为以下内容时:
a:5:{i:0;i:19;i:1;s:7:"enabled";i:2;b:1;i:3;s:4:"rate";i:4;i: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);
意思是:
a:5:是由5项组成的数组
i:0;i:19是索引为0“i:0”的第一个元素,值为整数19
i:1;s:7:“启用”如果元素的索引为1,则字符串为7个字符“已启用”
。。。等等
所需的序列化值似乎无效:
a:1:{i:19;a:2:{s:7:“启用”;s:4:“正确”;s:4:“速率”;s:2:“30”}
也许这会对您有所帮助(使用序列化PHP函数测试):
如果要将值直接存储/更新到表中,可以执行以下操作:
a:5:{i:0;i:19;i:1;s:7:"enabled";i:2;b:1;i:3;s:4:"rate";i:4;i: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);
<>但我不建议将手动修改的数据存储为序列化,或者直接保存到POMETA表,而不是使用UpDeaTePasyMeta函数。我不太清楚。您想直接在数据库中更改它,或者想调用以使用不同的参数再次更新发布元数据?请使用不同的参数再次更新发布元数据,这样结果将是:1:{i:19;a:2:{s:7:“已启用”;s:4:“真”;s:4:“速率”;s:2:“30”}我不确定是否理解。您想直接在数据库中更改它,或者您想调用以使用不同的参数再次更新发布元数据?使用不同的参数再次更新发布元数据,这样结果将是:1:{i:19;a:2:{s:7:“已启用”;s:4:“true”;s:4:“rate”;s:2:“30”}可能有办法,请检查是否有办法删除i:0,i:1,i:2,i:3您也可以从该值中获取数组,使用unserialize我认为您不能删除i:0、i:1、i:2、i:3,因为这些索引是由WP在将数据存储到DB中时生成的。即使我测试没有这些索引的序列化值,unserialize函数也会返回一个无效的序列化值。你能用它创建吗?可能有这样做的方法吗?请检查是否有任何方法可以删除I:0,I:1,I:2,I:3你也可以从该值获得一个数组,使用unserialize我认为你不能删除I:0,I:1,I:2,i:3,因为这些索引是在数据库中存储数据时由WP生成的。即使我测试没有这些索引的序列化值,unserialize函数也会返回无效的序列化值?