unserialize () значение базы данных и помещение его в json_encode после foreach - PullRequest
0 голосов
/ 01 сентября 2011

Я вставляю в базу данных значения (массив) $row->units с использованием функции serialize() => [$row->units], как их можно повторить с unserialize() в json_encode с $row->name? (верните 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 * ​​1031 *

1 Ответ

1 голос
/ 01 сентября 2011

У вас есть некоторые проблемы с кодировкой символов:

s:15:"Coffee"

15 означает длину в байтах.Поэтому вам нужно преобразовать кодировку данных, извлеченных из БД, в кодировку, которая использовалась с serialize ()

Вы можете использовать json_encode вместо serialize:

$arr = array('Coffee', 'Satellite', /*...*/);
$row->units = json_encode($arr);
...