2017-06-20 11 views
0

データベースからデータを取得する際に問題が発生しました。 Unserialize関数が機能していません。エラーや警告が表示されませんでした。データベースのデータを印刷してそれをunserialize関数に貼り付けると、正常に機能しています。私は次のコードを使用しています。Unserialize関数が機能していません

データベースのデータは次のとおりです。

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を指定する必要はありません。これを行う あなたは配列内の配列を使用している場合、あなたはその中でI = xを指定する必要があなたに

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

を助けることができます。

+0

'i = x'ですか?それは何ですか? –

+0

私は:0; s:2: "47"それを行う:2: "47" –

+0

私はデータベースにシリアル化データを保存しています。新しい値のために、データベースから値を取得し、既存の新しい値が再びそれをシリアル化し、データベースで更新します –

関連する問題