[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с unserialize
Gorini4
Всем доброе время суток!
Возникла проблема с получением массива из строки в базе.
Ситуация: пользователь заполняет форму, затем часть данных из формы загоняется в массив, который потом обрабатывается функцией serialize. Полученная строка загоняется в базу. При попытке преобразовать обратно в массив с помощью unserialize вылетает ошибка. Заметил, что как минимум в одном месте проблема исходит от точки с запятой. Magic_quotes включена, но символов, которые нужно было бы экранировать, в строке нет.
Сталкивался ли кто-то с подобным и, если да, то как с этим бороться? Хочу оговорить сразу - как нужно делать, чтобы этого косяка не было, я уже понял. Проблема в том, чтобы обработать часть базы, которая уже создана неправильным образом.



Спустя 6 часов, 56 минут, 22 секунды (19.10.2010 - 07:50) arvitaly написал(а):
Вы написали много строк и ничего. Что загоняется в serialize, куда этот serialize девается как вытаскивается.

Спустя 2 минуты, 23 секунды (19.10.2010 - 07:53) Michael написал(а):
пересоздать ее правильным образом, к тому же ты говоришь, что знаешь в чем косяк с теми строками.

Спустя 3 часа, 48 минут, 43 секунды (19.10.2010 - 11:41) Gorini4 написал(а):
Цитата (arvitaly @ 19.10.2010 - 04:50)
Вы написали много строк и ничего. Что загоняется в serialize, куда этот serialize девается как вытаскивается.

Отвечу цитатой: "часть данных из формы загоняется в массив, который потом обрабатывается функцией serialize. Полученная строка загоняется в базу". Добавить могу только то, что все поля формы - строковые и происходит всё в UTF-8. Что тут еще добавить даже не знаю.

Спустя 3 минуты, 52 секунды (19.10.2010 - 11:45) arvitaly написал(а):
print_r(unserialize(serialize(array(0,1,2,3,4,5,'6"\''))));


вот это работает, откуда понять что у вас именно не работает, покажите код

Спустя 1 минута, 59 секунд (19.10.2010 - 11:47) twin написал(а):
Мржет тупо не влазит? Строковые поля, это varchar? Там длина ограничена.

Спустя 7 минут, 3 секунды (19.10.2010 - 11:54) Gorini4 написал(а):
код простой - получение строки из базы и применение к ней unserialize(). ничем другим строка не обрабатывается.
нашел такой момент: поля массива записываются в виде "тип":"длина":"содержание". так вот проблема заключается в неправильном поле "длина". оно увеличивается на 2 вместо 1 при обработке каждого знака ";" . изменение этого поля решает проблему. но таких массивов около сотни и в каждом до 10 полей. поэтому вручную отлавливать - не вариант.

Спустя 54 секунды (19.10.2010 - 11:55) Gorini4 написал(а):
поля типа text. целостность преобразованного массива не нарушена.

Спустя 3 минуты, 19 секунд (19.10.2010 - 11:58) arvitaly написал(а):
Цитата
поля типа text. целостность преобразованного массива не нарушена.


видимо нарушена

Спустя 2 минуты, 10 секунд (19.10.2010 - 12:01) Gorini4 написал(а):
ну, я имею в виду, что он не обрезается базой и нет проблем с кодировкой.

Спустя 1 минута, 48 секунд (19.10.2010 - 12:02) arvitaly написал(а):
Покажите как сериализуете записываете в базу и десериализуете
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.