Odkazy: dibi | API reference

Forum: [česky] [english]

dibi fórum

tiny ‘n’ smart
database layer

Nejste přihlášen(a)

#1 před rokem

honzakuchar
Moderator
Registrovaný: 12. 8. 2007
Příspěvky: 1578

PgSQL a znak \x00 → oříznutí zbytku vstupu

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';

 

#2 před rokem

paranoiq
dibi guru
Registrovaný: 14. 11. 2006
Příspěvky: 357

Re: PgSQL a znak \x00 → oříznutí zbytku vstupu

nebylo by řešením použít v databázi místo stringu blob?

 

#3 před rokem

honzakuchar
Moderator
Registrovaný: 12. 8. 2007
Příspěvky: 1578

Re: PgSQL a znak \x00 → oříznutí zbytku vstupu

Při použití blobu to sice dibi přeloží správně, ale pak to stejně nejde unserializovat. :(

 

Zápatí