繁体   English   中英

从数据库反序列化序列化的字符串时,为什么会显示错误消息?

[英]why error message is showing when unserialize a serialized string from database?

好吧,我有以下数组和变量,其输出如下:

`print_r($menu_ex_qnt);`

Array
(
    [0] => 1
    [1] => 2
)


print_r($menu_extra_item_name);

Array
(
    [0] => 238
    [1] => 239
)

$final_ex = array_combine($menu_ex_name, $menu_ex_qnt);        
print_r($final_ex);

Array
(
    [238] => 1
    [239] => 2
)

echo $final_ex = serialize($final_ex);

a:2:{i:238;s:1:"1";i:239;s:1:"2";}

现在,我将这个$final_ex变量插入数据库。

但是,当我从数据库中获取此变量并尝试对其进行反unserialize ,它向我显示以下错误消息:

echo unserialize($p_ext_items);
Note : This $p_ext_items contain the serialize string e.g: a:2:{i:238;s:1:"3";i:239;s:1:"1";}

Notice: unserialize(): Error at offset 11 of 54 bytes .......

为什么呢?

我到底想要什么

有2个变量$menu_ex_qnt$menu_extra_item_name 我想保存这两个变量value 而不是数据库的key 这样,在最终变量中将有keyvalue对。

例如:

238 => 1
239 => 2

因为您说$p_ext_items包含序列化字符串,所以它是: $p_ext_items a:2:{i:238;s:1:"1";i:239;s:1:"2";}

而您做到了:-

$p_ext_items = htmlspecialchars($result['p_ext_items']);
echo unserialize($p_ext_items);

您必须删除第一行,在这种情况下不需要,因此只需执行以下操作:

print_r(unserialize($p_ext_items)); // it will give array so use print_r

注意:-适用于您的示例: -https : //eval.in/611959

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM