Používání PHP v databázích

Školení, která pořádám

Nespletl jsem si nadpis, nechci psát spíš o používání databází v PHP? Opravdu ne, článek je skutečně o tom, jak se dá používat PHP v jazyce SQL, klidně i mimo webové aplikace.

Nejjednodušší je situace u SQLite v PHP. Protože se nejedná o databázový server, ale o embedovanou databázi, je i její integrace s mateřským prostředím přímočařejší. K dispozici je funkce sqlite_create_function, která z PHP funkce vytvoří SQLite funkci, a sqlite_create_aggregate, která stejně jednoduše z iterační a ukončovací PHP funkce vytvoří agregační SQLite funkci. Předávání parametrů i návratové hodnoty je přímočaré.

U MySQL je situace složitější. Existuje knihovna myphp, pomocí které se dá PHP v MySQL zprovoznit. Nutná je navíc nestandardní kompilace PHP a povolení nahrávání knihoven v MySQL. Po zpřístupnění PHP v MySQL kódem CREATE FUNCTION PHP RETURNS STRING SONAME 'myphp.so' se PHP volá takhle: SELECT PHP('return $argv[1] * $argv[2];', 4, 5). PHP kód tak může být uložen přímo v databázi, což sice znamená ještě těsnější integraci, na druhou stranu ale těžší správu kódu. Více informací o této knihovně je k dispozici v prezentaci od jejího autora.

K čemu se tohle všechno vlastně dá použít? Čas od času mi v SQL chybí nějaká funkce (např. obdoba preg_replace) nebo agregační funkce, která by se tímto způsobem dala implementovat. Kód by pak byl mnohem elegantnější než získání všech dat z databáze a jejich následné zpracování v PHP, o práci přímo v databázové konzoli nemluvě. Kdyby integrace s MySQL byla stejně jednoduchá jako u SQLite, tak bych tento mechanismus možná čas od času využil, takhle to s největším pravděpodobností nechám plavat.

Jakub Vrána, Seznámení s oblastí, 8.5.2006, diskuse: 1 (nové: 0)

Diskuse

jow:

A co PostgreSQL?? Tam je to o mnohem lepsi, ale to jen tak na okraj, kdyz uz se clanek jmenuje "Používání PHP v databázích" ;)...

Kdyby to nekoho zajimalo tak nejaky ten odkaz:
http://projects.commandprompt.com/public/plphp/wiki

Vložit komentář

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2018 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.