我正在使用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()作为数组返回。
有人能解释一下发生了什么,为什么我从查询和和获取中得到一个简单的字符串(或缺少序列化语法的字符串),而不是一个序列化的数组字符串或数组吗?