Я пытаюсь получить дату, указанную с помощью POST, а затем создать список дат за 12-недельный период с указанной даты начала. Эти даты затем попадают в БД и выводится 12-недельное расписание, с которым пользователь может взаимодействовать (добавлять / редактировать / удалять).
Я успешно беру дату начала, генерирую список дат на 12 недель и добавляю его в БД в сериализованной форме, но когда дело доходит до выбора дат для отображения, я получаю следующую ошибку:
Notice: unserialize() [function.unserialize]: Error at offset 0 of xxx bytes in ...
Вот мой код:
1-й файл .php здесь, чтобы взять форму ввода (дату), а затем получить список каждой даты за 12-недельный период с даты начала и вставить в БД:
Массив:
$start = strtotime($_POST['Start_Date']);
$dates=array();
for($i = 0; $i<=84; $i++)
{
array_push($dates,date('Y-m-d', strtotime("+$i day", $start)));
}
$savetodb = serialize($dates);
Вставка:
$sql = "INSERT INTO programme VALUES (NULL, '20', '".$_POST["Start_Date"]."' , ' ".$savetodb." ', '".$_POST["Programme_Notes"]."')";
2-й файл .php здесь - ВЫБРАТЬ и десериализовать:
$result = mysql_query("SELECT Programme_Dates FROM programme");
while($row = mysql_fetch_array($result))
{
$dates = unserialize($row["Programme_Dates"]);
echo $dates;
}
Из того, что я прочитал, проблема может быть связана со столбцом БД, в который вставлен сериализованный массив (т. Е. Он слишком мал), но для него установлено значение TEXT, так что все должно быть в порядке, верно? Я также думал, что в дате могут быть определенные символы, вызывающие проблемы, но при тестировании с «обычным» массивом (т. Е. Просто текстом) я получаю те же ошибки.
Любые предложения / советы очень ценятся, спасибо.