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.