检索数据库wordpress中的序列化值

时间:2014-10-22 03:23:36

标签: php mysql arrays wordpress serialization

我试图在wordpress中查询数据库中的序列化数组值,值将存储在表meta_value中的表wp_postmeta中。
好吧,首先我使用php的serialize()函数存储数组。
例如,

$postID = 1;
$arr = array(1, 2, 3);
$ser_val = serialize($arr);
update_meta_data($postID, '_customvalue', $ser_val);

存储的值是这样的

s:30:"a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}";

然后当我尝试通过执行wordpress sql查询来检索它时。我期待它将是一个数组,因为它存储为数组,但在这样做之后,它显示为字符串而不是数组。

    $get_score = $wpdb->get_row("SELECT meta_value FROM wp_postmeta WHERE meta_key = '_cummulativescore'");
    $scr = unserialize($get_score->meta_value);
    var_dump($scr);

    //output displayed
    //string(30) "a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}" 

我确实使用is_array()函数检查了值,结果是它不是数组
有什么想法将序列化值作为数组?

1 个答案:

答案 0 :(得分:0)

在序列化过程中,您的数据似乎已转换为字符串。

数据应存储为

a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}

而不是

s:30:"a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}"

s:30表示字符串长度为30。