|
![]() | Rozhraní PHP | wb_connect | ![]() |
PHP obsahuje jen čtyři základní typy; boolean, long, řetězec a realná čísla. Zde je popsáno, jak se postupuje při převodu hodnot z 602SQL do typů PHP (při čtení hodnot sloupců aktuálního záznamu kurzoru funkcí wb_result nebo při předání OUT parametrů SQL příkazů při použití host variables (tj. uvozených pomocí :<>). Poněkud odlišná pravidla platí pro předávání proměnných pomocí parametrů tzv. prepared funkcí.
Hodnota NULL libovolného typu se z databáze do PHP přečte vždy jako PHP hodnota NULL. U obvyklých typů (jako jsou číselné typy, datumové a časové typy apod.) je toto chování očekávané a běžné. Na tuto vlastnost je však třeba dát pozor při práci s řetězcovými typy (ať už pevné délky, nebo proměnné délky), protože databázová hodnota "prázdný řetězec" se do PHP převede jako PHP hodnota NULL.
Tyto typy lze přímo převést na odpovídající PHP typ. Všechny celočíselné typy se převedou na PHP typ LONG. Typ CHAR se převede na jednoznakový řetězec. Všechny řetězcové typy s pevnou délkou se rovněž převádějí na řetězec.
Pokud tyto typy mají desetinnou část, jsou převedeny na type REAL, jinak jsou převedeny na typ LONG.
Unicode stringy jsou v 602SQL uloženy v kódování UCS-2, ale v PHP se snadněji pracuje s řetězci v kódování UTF-8. Proto PHP modul automaticky zkonvertuje Unicode řetězce do kódování UTF-8 a řetězec v tomto tvaru zpřístupní PHP skriptu.
Typy spojené s časem se převádí dvěma různými způsoby. Zatímco čas je překonvertován na "čitelný" řetězec, typ DATE a TIMESTAMP je zkonvertován do typu long, a vrácen je počet sekund od Unix Epoch (1. leden 1970), tedy formát, se kterým lze dále pracovat prostředky PHP, např. zformátovat funkcí date().
Typ BIGINT je převeden na podle své velikosti buď na LONG nebo na REAL. Toto může obecně vést ke ztrátě části informace, a je tedy lepší se této konverzi vyhnout (např. explicitní konverzí v SQL dotazu).
Jsou to sloupce typu BINARY(n), kde n<=4090. Tyto hodnoty budou přečteny jako hodnota typu PHP string. Pokud má v okamžiku čtení údaje parametr wb_binmode hodnotu WB_CONVERT, bude binární hodnota zkonvertována do hexadecimálního zápisu (např. hodnota "ab" bude zkonvertována na "6162", protože ASCII hodnota znaku "a" je v šestnáctkové soustavě 61 a znaku "b" 62). V případě, že má wb_binmode jakoukoliv jinou hodnotu, bude binární řetězec pevné délky přečten jako PHP string bez jakékoliv konverze.
Složitější je situace při konverzi typů proměnné délky, textových a binárních. Jedná se o typy CLOB, NCLOB a BLOB. Čtení hodnot těchto typů je popsáno v dokumentu Manipulace s typy proměnné délky v PHP.
![]() | Rozhraní PHP | wb_connect | ![]() |