Подтвердить что ты не робот

Сериализованный разрыв массива при извлечении из базы данных

Я сохраняю данные в базе данных mysql. Эти данные представляют собой массив, а контент - это разные данные текущего пользователя, который входит в систему в моей системе.

Я делаю это при сохранении в базе данных:

$data = addslashes(serialize($array));

затем

"UPDATE or INSERT INTO TABLE SET ... data = '$data';"

Теперь данные сохраняются правильно, так как оператор insert или update возвращается из моего php-кода.

Моя проблема в том, что когда я пытаюсь выполнить его сериализацию, он возвращает false и уведомление отображается на моей странице.

Что я делаю неправильно?

4b9b3361

Ответ 1

Ставлю, что поле в вашей базе данных mysql недостаточно велико, чтобы сохранить все символы. Вот почему, когда вы несериализуете его, вы получаете уведомление и ничего взамен.

Попробуйте увеличить поле до MEDIUMBLOB или MEDIUMTEXT (максимальная длина 16 777 215) или LONGBLOB или LONGTEXT (максимальная длина 4 294 967 295), как это:

ALTER TABLE your_table MODIFY COLUMN column_name MEDIUMTEXT /* other properties*/;

И попробуйте снова сохранить и прочитать данные.

Теперь, если ваши данные превышают 4 294 967 295 (это LONGBLOB или LONGTEXT), возможно, вам стоит проверить, какие данные вы сохраняете и, возможно, фильтруете или удаляете ненужные.

Ответ 2

После получения данных из таблицы удалите косые черты перед функцией unserialize.

Попробуйте вставить без addslashes() и добавьте косые черты перед его переносом в массив.