Nejste přihlášen(a)
Ahoj,
když jsem potřeboval uložit do databáze serializovaný objekt, tak jsem
narazil na zajímavý bug:
Zkustě si udělat toto:
// Driver postgre
Debug::dump(serialize(Environment::getCache()));
Dibi::test("INSERT INTO [test]",array(
"test%s" => serialize(Environment::getCache())
));
Výstup:
string(290) "O:5:"Cache":4:{s:14:"\x00Cache\x00storage ... "
INSERT INTO "test" ("test")
VALUES ('O:5:"Cache":4:{s:14:"')
String se za znakem \x00 ořízne → při deserializaci samozřejmě výjimka. Workaround: použít ještě base64. Používám driver postgres. Dibi
const VERSION = '1.3-dev';
const REVISION = 'a8e83ce released on 2010-01-26';
nebylo by řešením použít v databázi místo stringu blob?
Při použití blobu to sice dibi přeloží správně, ale pak to stejně nejde unserializovat. :(