2017-06-20 117 views
0

我得到問題來反序列化從數據庫中獲取的數據。反序列化函數不起作用。我沒有看到任何錯誤或警告。當我打印數據庫數據並將其粘貼到反序列化函數中時,它正在工作。我正在使用下面的代碼。反序列化函數不起作用

數據庫中的數據是:

s:333:"a:24:{i:0;s:2:"46";i:1;s:2:"43";i:2;s:2:"42";i:3;s:2:"37";i:4;s:2:"36";i:5;s:2:"35";i:6;s:2:"33";i:7;s:2:"31";i:8;s:2:"30";i:9;s:2:"28";i:10;s:2:"26";i:11;s:2:"24";i:12;s:2:"22";i:13;s:2:"20";i:14;s:2:"74";i:15;s:2:"75";i:16;s:2:"77";i:17;s:2:"79";i:18;s:2:"81";i:19;s:2:"83";i:20;s:2:"85";i:21;s:2:"87";i:22;s:2:"89";i:23;s:2:"91";}";a:24:{i:0;s:2:"46";i:1;s:2:"43";i:2;s:2:"42";i:3;s:2:"37";i:4;s:2:"36";i:5;s:2:"35";i:6;s:2:"33";i:7;s:2:"31";i:8;s:2:"30";i:9;s:2:"28";i:10;s:2:"26";i:11;s:2:"24";i:12;s:2:"22";i:13;s:2:"20";i:14;s:2:"74";i:15;s:2:"75";i:16;s:2:"77";i:17;s:2:"79";i:18;s:2:"81";i:19;s:2:"83";i:20;s:2:"85";i:21;s:2:"87";i:22;s:2:"89";i:23;s:2:"91";} 

我使用的代碼是:

$sql_query = "SELECT * FROM `wp_usermeta` WHERE `meta_key` LIKE 'Assign_Lead' AND `meta_value` LIKE '%".$lead_id."%'"; 
$scID = $wpdb->get_results($sql_query); 
foreach($scID as $kc => $vc){ 
    print_r($vc->meta_value); 
    $resutlt = unserialize($vc->meta_value); 
    //print_r($resutlt); 
    if(in_array($lead_id,$resutlt)){ 
     $scid = $vc->user_id; 
     $user_info = get_userdata($scid); 
     $scname = $user_info->display_name; 
     break; 
    } 
} 
+0

如果值正確,如何打印'$ vc-> meta_value'? – Kazz

+0

從數據庫獲取序列化數據。它是數據庫字段名稱 –

+0

首先'unserialize'工作正常,當數據正確序列化時......因此,問題不在於'unserialize',而在於'data' ... 什麼是'print_r'結果? –

回答

0

你不需要當您使用一個簡單的數組來指定我= X。 這樣做可以幫助你

a:24:{s:2:"46";s:2:"43";s:2:"42";s:2:"37"..} 

如果你使用一個數組的數組,然後你需要指定我在那= X。

+0

'i = x'後顯示相同的結果?它是什麼? –

+0

喜歡自己正在做我:0; S:2:「47」,這樣做S:2:「47」 –

+0

我保存在數據庫中的數據串行化,對於新的價值,正從數據庫中的值,反序列化它,然後添加現有的新值然後再次序列化並在數據庫中進行更新 –