Oznámení
"" 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.