【问题标题】:I got unserialize error at offset 0 of 115我在 115 的偏移量 0 处收到反序列化错误
【发布时间】:2018-09-24 00:43:50
【问题描述】:

我正在从 mysql DB 获取序列化数据并尝试反序列化它们以供进一步使用,但是,我在 115 字节的偏移量 0 处出错

我正在尝试反序列化的数据:

'a:2:{i:0;a:2:{i:0;i:1;i:1;s:2:"38";}i:1;a:2:{i:0;i:2;i:1;s:2:"39";}}'

这是我的代码:

  public function retrival(){

$warehouse_data  =DB::table('initial')->select('variable1')
  ->where('option','=',8)
  ->get();


$decode_data=unserialize($warehouse_data);


}

【问题讨论】:

  • 如果你var_dump($warehouse_data),你会得到什么?
  • 数据中真的有单引号吗?
  • "error at offset 0 of 115 bytes" 您的示例只有 70 个字节,所以我认为这不是您要反序列化的实际数据。跨度>
  • object(Illuminate\Support\Collection)#270 (1) { ["items":protected]=> array(2) { [0]=> object(stdClass)#267 (1) { ["variable1"]=> string(68) "a:2:{i:0;a:2:{i:0;i:1;i:1;s:2:"38";}i: 1;a:2:{i:0;i:2;i:1;s:2:"39";}}" } [1]=> object(stdClass)#266 (1) { ["variable1" ]=> 字符串(8) "77865765" } } }
  • 我收到了回复

标签: php mysql arrays laravel-5 serialization


【解决方案1】:

get()返回一个集合,表示结果的所有行,每一行都是一个对象。您需要对其进行索引,然后访问相应的列。

$warehouse_data  =DB::table('initial')->select('variable1')
  ->where('option','=',8)
  ->first()
  ->variable1;

您也可以使用value() 方法:

$warehouse_data  =DB::table('initial')->select('variable1')
  ->where('option','=',8)
  ->value('variable1');

请参阅Retrieving Results 上的 Laravel 文档

【讨论】:

  • 如果它解决了问题,您应该接受答案。
猜你喜欢
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 2016-04-11
  • 2013-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多