[英]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
。 这样,在最终变量中将有key
和value
对。
例如:
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.