【发布时间】:2018-01-22 11:45:04
【问题描述】:
我正在尝试修复 unserialize() 上的 PHP 错误。我知道我们可以使用@ 来抑制它,但是否可以在不抑制的情况下修复该错误。
这是表格和我的代码:
TABLE: 'config'
id c_key c_value
1 facebook a:1:{i:0;s:8:"Newsfeed";}
2 mg_notification_msv to.aaaa.org
public function db_get_config($key, $default = null)
{
if (!empty($key)) {
// $record = $this->db_get_record($this->tables['config'], array('c_key' => $key));
$record = $this->db->from($this->tables['config'])->where(array('c_key' => $key))->limit(1)->get()->row_array();
if (!empty($record)) {
$value = unserialize($record['c_value']); // Message: unserialize(): Error at offset 0 of 15 bytes
if ($value === false) {
$value = $record['c_value'];
}
return $value;
}
}
return $default;
}
当将$key 作为facebook 或mg_notification_msv 传递时,函数在var_dump() 上返回array(1) { [0]=> string(8) "Newsfeed" } 或string(15) "to.aaaa.org"。
这会返回错误:
遇到 PHP 错误 严重性:通知消息:unserialize():在 15 个字节的偏移量 0 处出错 文件名:models/common_model.php 行号:xxxx
有没有办法修复这个 PHP 错误?
在$record['c_value'] 上使用strlen() 对我没有帮助。
【问题讨论】:
-
@PhilippMaurer 上面提到的类似问题并没有解决我的问题。我添加了代码功能检查
serialized。感谢 Wordpress。
标签: php serialization