我有一个序列化的字符串,我试图反序列化它,但得到错误。
序列化字符串回显:
string(175) "a:6:{s:6:"tables";s:9:"8 Tables";s:8:"table_no";s:1:"6";s:6:"chairs";s:6:"Chairs";s:8:"chair_no";s:1:"6";s:12:"round_tables";s:11:"Round Table";s:14:"round_table_no";s:1:"6";}"
数据库中的数据:
a:6:{s:6:"tables";s:9:"8 Tables";s:8:"table_no";s:1:"6";s:6:"chairs";s:6:"Chairs";s:8:"chair_no";s:1:"6";s:12:"round_tables";s:11:"Round Table";s:14:"round_table_no";s:1:"6";}
用于反序列化数据的代码
var_dump(unserialize($fellowship_data['equipment']));
在序列化并保存到数据库之前将数据发送到请求后
["equipment"]=>
array(7) {
["tables"]=>
string(9) "8' Tables"
["table_no"]=>
string(1) "6"
["chairs"]=>
string(6) "Chairs"
["chair_no"]=>
string(1) "6"
["round_tables"]=>
string(11) "Round Table"
["round_table_no"]=>
string(1) "6"
["piping_drapes"]=>
string(13) "Piping Drapes"
}
进行序列化之前的代码
$equipment = array();
if ( isset($_POST['equipment']) ){
$equipment['tables'] = isset( $_POST['equipment']['tables'] ) ? str_replace("'","", $_POST['equipment']['tables']) : '';
$equipment['table_no'] = isset( $_POST['equipment']['table_no'] ) ? $_POST['equipment']['table_no'] : '';
$equipment['chairs'] = isset( $_POST['equipment']['chairs'] ) ? $_POST['equipment']['chairs'] : '';
$equipment['chair_no'] = isset( $_POST['equipment']['chair_no'] ) ? $_POST['equipment']['chair_no'] : '';
$equipment['round_tables'] = isset( $_POST['equipment']['round_tables'] ) ? $_POST['equipment']['round_tables'] : '';
$equipment['round_table_no'] = isset( $_POST['equipment']['round_table_no'] ) ? $_POST['equipment']['round_table_no'] : '';
}
序列化数据的代码
$equipment = serialize($equipment);
将其重新序列化,返回false
。
更新 我更改了代码并使用了json_encode和json_decode并将其存储在databsae中作为文本,现在json解码时我得到了NULL !!
任何人都可以告诉我如何解决它吗?
如果需要更多信息,请向我提问,以便我对这些问题进行补充。
注意: 我正在处理的服务器在其数据库中不支持json
数据类型,因此我一定会使用序列化。我不建议人们关注它并使用serialize()
进行保存。
答案 0 :(得分:0)
我运行了您提供的示例代码,它正确地序列化数据。
预期结果:
A
预期和结果之间的唯一区别是内容“8表”不是9个字符长。 您的原始输入(8'表格)实际上是9个字符长,字符'已滤除 我最好的猜测是你的输入用'字符序列化,你在序列化后将其过滤掉。
以下是我运行的代码段:
B
使用JSON序列化数据:
如果您决定使用json序列化数据,那么所需的代码实际上没有太大区别。
您使用“json_encode”就像“serialize”和“json_decode”类似于“unserialize”。关于decoding json data in php的最重要的注意事项是,您可以决定是否需要对象或关联数组。正如你想要一个数组,解码函数将是json_decode($ data, true )。
使用JSON的示例:
string(175) "a:6:{s:6:"tables";s:8:"8 Tables";s:8:"table_no";s:1:"6";s:6:"chairs";s:6:"Chairs";s:8:"chair_no";s:1:"6";s:12:"round_tables";s:11:"Round Table";s:14:"round_table_no";s:1:"6";}"