Oznámení
Omlouváme se, provoz fóra byl ukončen
PgSQL a znak \x00 → oříznutí zbytku vstupu
Upozornění: Tohle vlákno je hodně staré.
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. :(