保存的帖子元数组以字符串形式返回

时间:2016-05-12 作者:stoi2m1

我正在使用update\\u post\\u meta在post meta中保存一个数组。

$arr = array(\'this\', \'or that\');
update_post_meta($post_id, \'field\', $arr);
$ret_arr = get_post_meta($post_id, \'field\', true);
var_dump($ret_arr);

// string (13) "this or that"
保存在数据库中的数据,从Posteta表复制和粘贴

a:2:{i:0;s:5:"this";i:1;s:7:"or that";
然后,我尝试使用以下命令执行wordpress查询

$res = $wpdb->get_results( "SELECT meta_value FROM wp_postmeta WHERE meta_key = \'field\' AND post_id = \'$post_id\'" );
var_dump($res);

// array(1) { [0]=> object(stdClass)#673 (1) { ["meta_value"]=> string(13) "this or that" } } 
我回显了我的SQL语句,并在PHPMyAdmin中使用它,并验证了该语句返回的数据是否序列化。

最后我试着建立自己的联系

$connect = @mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)
    or die(\'Database Connection Failed. Error 1\'); 
$db = @mysql_select_db(DB_NAME, $connect)
    or die(\'Database Connection Failed. Error 2\');
$res = $wpdb->get_results( "SELECT meta_value FROM brated_postmeta WHERE meta_key = \'".$field[\'id\']."\' AND post_id = \'$post_id\'", OBJECT );
var_dump($res);

// array(1) { [0]=> object(stdClass)#673 (1) { ["meta_value"]=> string(13) "this or that" } }
正如您所看到的,所有3次数据提取的结果只返回字符串"this or that" 和缺少序列化语法,甚至没有使用get\\u post\\u meta()作为数组返回。

有人能解释一下发生了什么,为什么我从查询和和获取中得到一个简单的字符串(或缺少序列化语法的字符串),而不是一个序列化的数组字符串或数组吗?

1 个回复
最合适的回答,由SO网友:stoi2m1 整理而成

最后是一个插件和我的代码相互冲突。他们都在保存我的post\\u meta。导致我的代码和检索数据的功能出现异常行为。

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在