Serialize () ve unserialize Sorunları () - ekleme ve veri PHP MySQL seçme

0 Cevap php

Daha sonra verilen başlangıç ​​tarihinden itibaren 12 haftalık bir süre içinde tarihlerin bir listesini oluşturmak, POST aracılığıyla sağlanan bir tarih kapmak için çalışılıyor. Bu tarihler daha sonra veritabanına gider ve bir 12 hafta programı kullanıcı (ekleme / düzenleme / silme) ile etkileşim çıkışı olacaktır.

Ben başarılı başlangıç ​​tarihini alarak 12 haftalık tarih listesi oluşturma ve tefrika halinde DB içine bu ekleyerek, ama ekran için tarih seçimi söz konusu olduğunda, ben hata aşağıdaki almak ediyorum:

Notice: unserialize() [function.unserialize]: Error at offset 0 of xxx bytes in ...

İşte benim kod:

. Burada 1 php dosyası bir form girişi (tarih) almak ve sonra başlangıç ​​tarihinden itibaren 12 hafta süresince her tarih bir listesini almak ve veritabanına eklemek için:

Dizi:

$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);

Insert:

$sql = "INSERT INTO programme VALUES (NULL, '20', '".$_POST["Start_Date"]."' , ' ".$savetodb." ', '".$_POST["Programme_Notes"]."')"; 

. Burada 2. php dosyası - SELECT ve unserialize:

$result = mysql_query("SELECT Programme_Dates FROM programme");

while($row = mysql_fetch_array($result))
  {
  $dates = unserialize($row["Programme_Dates"]); 
  echo $dates;

  }

Okuduğum kadarıyla sorun tefrika dizi (yani çok küçük olması) sokulur DB sütunu ile ilişkili olabilir, ancak METİN ayarlanır böylece ince doğru olmalıdır? Ben de sorunlara neden bir tarih içinde bazı karakterler olabilir düşündüm, ama "normal" bir dizi (yani sadece metin) ile test ederken, ben aynı hataları almak.

Herhangi bir öneri / ipuçları çok, teşekkür takdir.

0 Cevap