【发布时间】:2018-02-02 17:38:25
【问题描述】:
我在 MySQL longblob 数据字段中存储了以下序列化数组:
a:1:{s:10:"attributes";a:1:{s:13:"Ticket Holder";a:1:{i:0;s:8:"Joe Blow";}}}
在 PHP 中,当我查询字段、反序列化并打印出来时,会打印出以下空数组:
Array
(
)
这是表创建语句:
CREATE TABLE `order` (
`state` varchar(255) CHARACTER SET ascii DEFAULT NULL,
`data` longblob,
`created` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
【问题讨论】:
-
你用什么代码来反序列化它?
-
你使用什么函数来执行查询和反序列化?
-
它在 Drupal 8 中。我正在使用 \Drupal\Core\Database\Connection 中的 select 函数进行查询。我只是使用 PHP 反序列化函数来反序列化它。
-
在phpfiddle中试过,
unserialize()抛出异常。如果我复制数组并对其进行序列化,我会得到a:1:{s:10:"attributes";a:1:{s:13:"ticket holder";a:1:{i:0;s:8:"Joe Blow";}}}底线:我认为你得到的数据有问题 -
出于隐私考虑,我更改了持票人姓名。这是我的序列化代码 serialize(['attributes' => ['Ticket Holder' => ['Joe Blow']]])。
标签: php mysql deserialization blob