tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

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

před 9 lety

honzakuchar
Backer | 1649

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

před 9 lety

paranoiq
Člen | 388

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

před 9 lety

honzakuchar
Backer | 1649

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