tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

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

"" prekladano v poli jako NULL i kdyz je nastaven %s

před 11 lety

Whitek
hledá kolegy | 299

vkladam do dibi prvky v poli:

dibi::query("INSERT INTO tbl ", array("a"=>$data['a'], "b"=>$data['b']);

ale kdyz je treba $data[a]=="" (resp !isset($data[a])) tak je prelozeno jako NULL. Proti tomu by se dle quickstartu melo bojovat pouzitim modifikatoru ‚%s‘ (kdyby to byl string, pro integer nic nevidim), avsak

dibi::query("INSERT INTO tbl ", array("a%s"=>$data['a'], "b"=>$data['b']);

take nefunguje

Abych rekl pravdu, nejsem si jist, zda je to uplne bug – da se workaroundovat pres pretypovani:

dibi::query("INSERT INTO tbl ", array("a"=> (string) $data['a'], "b"=>$data['b']);

ale docela by to imho pomohlo, kdyby na to byl nejakej modifikator : )

Editoval Whitek (21. 12. 2008 12:25)

před 11 lety

David Grudl
Nette Core | 6806

!isset($data[a]) odpovídá $data[a]==NULL, tj. dibi dostane NULL a nemůže tušit, že to má být řetězec. Na NULL se ani nevztahují modifikátory, protože NULL je sám o sobě korektní databázový typ. Takže je potřeba hodnotu na řetězec přetypovat.