Unserialize() значение базы данных и поместить ее в json_encode после foreach
Я вставляю в значения базы данных (массив) $row->units
с помощью функции serialize()
= > [$row->units]
, как можно отследить их с помощью unserialize()
в json_encode
с помощью $row->name
? (return send для вызова ajax в jQuery)
Столбцы в базе данных:
$row- > units = > a:6:{i:0;s:15:"Coffee";i:1;s:14:"Satellite";i:2;s:11:"Game
Notes";i:3;s:14:"Internet";i:4;s:10:"Pool";i:5;s:0:"";}
$row → name= > George Kurdahi
$query = $this->db->query("SELECT * FROM arraha WHERE name LIKE '%$search%' ORDER BY name asc");
$data = array();
foreach ($query->result() as $row)
{
$data[] = array('name' => $row->name, 'units' => unserialize($row->units)); // Line 22
}
return json_encode($data)
Ошибка для кода выше:
Возникла ошибка PHP
Уровень важности: примечание
Сообщение: unserialize() [function.unserialize]: ошибка со смещением 277 из 281 байт
Имя файла: model.php
Номер строки: 22
Ответы
Ответ 1
У вас есть некоторые проблемы с кодировкой символов:
s:15:"Coffee"
15 означает длину в байтах. Таким образом, вам необходимо перевести кодирование данных, полученных из БД, в кодировку, которая использовалась с serialize()
Вы можете использовать json_encode вместо сериализации:
$arr = array('Coffee', 'Satellite', /*...*/);
$row->units = json_encode($arr);