[PHP] unserialize geeft bool(false)

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Raem
  • Registratie: Oktober 2005
  • Nu online
In Drupal worden sommige waardes serialized opgeslagen in de database. Via PHP wil ik deze uitlezen met een eigen script, maar dit gaat niet in alle gevallen goed. Ik haal de waardes op de volgende manier op: (komen allemaal uit hetzelfde veld in dezelfde tabel).

code:
1
2
$producten = $data['data'];
var_dump(unserialize($producten));


In sommige gevallen gaat het goed, maar in de meeste gevallen krijg ik als resultaat "bool(false)".

De waardes bij welke het goed gaan staan bijvoorbeeld zo in de database:

code:
1
a:4:{s:10:"attributes";a:0:{}s:9:"shippable";s:1:"1";s:4:"type";s:19:"product_assortiment";s:6:"module";s:10:"uc_product";}


Bij bijvoorbeeld deze gaat het fout:

code:
1
a:4:{s:10:"attributes";a:3:{s:6:"Optie1";a:1:{i:6;s:7:"2 meter";}s:6:"Optie2";a:1:{i:0;s:0:"";}s:9:"Geschaafd";a:1:{i:0;s:0:"";}}s:6:"Optie3";s:1:"1";s:4:"type";s:7:"product";s:6:"module";s:10:"uc_product";}


Het gaat om producten bij een bestelling en het lijkt erop dat wanneer er opties bij een product horen (dit is namelijk in het tweede geval zo), dat het dan niet lukt.
Wanneer ik de tweede waarde in een online unserialize website gooi gaat het wel goed. En ook wanneer ik de hele waarde direct in de code zet gaat het goed. Maar vanuit de database gaat het mis.

Moet ik de waarde misschien eerst nog ergens naar omzetten voordat ik unserialize toepas?

https://psnprofiles.com/RaemNL


Acties:
  • 0 Henk 'm!

  • HollowGamer
  • Registratie: Februari 2009
  • Niet online
Off-topic:
Misschien niet de oplossing, maar ik gebruik meestal de functies json_encode en json_decode voor het opslaan/exporteren van data in/uit een tabel. Dit schijnt ook sneller te zijn dan de inbuilt PHP serialize functie.

On-topic:
Hoe ziet je database schema uit en hoe haal het op?

[ Voor 4% gewijzigd door HollowGamer op 17-11-2015 16:16 ]


Acties:
  • 0 Henk 'm!

  • Shivs
  • Registratie: Januari 2010
  • Niet online
Heb je al gekeken naar de plek waar dit wordt geserialised voordat het wordt opgeslagen? Mogelijk doet Drupal nog iets met de data voordat deze wordt weggeschreven en moet je hetzelfde doen voor de unserialise.

Acties:
  • 0 Henk 'm!

  • Raem
  • Registratie: Oktober 2005
  • Nu online
Volgens mij heb ik het probleem al gevonden. In één van de productopties zit een ï. Deze wordt in mijn output in PHP gezien als 1 karakter, maar in de serialized array wordt deze meegegeven als 2 karakters.

https://psnprofiles.com/RaemNL


Acties:
  • 0 Henk 'm!

  • ajakkes
  • Registratie: Maart 2004
  • Laatst online: 16-05 22:32

ajakkes

👑

UTF8 probleem?

👑