PHP kézikönyv
Előző |  | Következő

# sqlite_create_function

(PHP 5)

sqlite_create_function -- Felhasználó által definiált SQL függvény regisztrálása

## Leírás

bool sqlite_create_function ( resource dbhandle, string function_name, callback callback [, int num_args] )

Az sqlite_create_function() által lehetőség nyílik arra, hogy PHP-ben írt függvényünket SQL lekérésekben. Ezeket egyezményesen UDF (felhasználó által definiált) néven függvényeknek hívjuk.

A dbhandle paraméterben hivatkozhatunk arra a megnyitott adatbázisra, amelyhez függvényünket átmenetileg hozzárendeljük. A function_name adható meg, milyen néven szeretnénk használni az adott függvényt az SQL kérésekben. A callback paraméterben a PHP-ben írt függvényünk nevét kell közölnünk, amely az adott feladatot megvalósítja. A függvénynek olyan visszatérési értékkel kell szolglnia, amit az SQLite fel tud dolgozni (lásd: skaláris típusok type). A nem kötelezően megadandó num_args paraméterben adhatunk tippet az SQLite feldolgozú számára, hány paramétert is vár függvényünk. Ha megvalósításunk kötött számú adatot vár, ajánlott ezt az értéket beállítani.

Ezek az UDF függvények mindenhol felhasználhatók, ahol függvények bevetése amúgy is lehetséges. Ez lehet éppen SELECT vagy UPDATE is, de akár kioldók (trigger) megadásakor is.

Példa 1. sqlite_create_function() példa
`<?php function md5_es_forditott_sorrend($string) { return strrev(md5($string)); } if ($dbhandle = sqlite_open('mysqlitedb', 0666, $sqliteerror)) { sqlite_create_function($dbhandle, 'hanyatt_md5', 'md5_es_forditott_sorrend', 1); $sql = 'SELECT hanyatt_md5(filename) FROM files'; $rows = sqlite_array_query($dbhandle, $sql); } else { echo 'Nem sikerült megnyitni az adatbázist: ' . $sqliteerror; exit; } ?>`

A példában szereplő függvény egy adott szöveg md5 összegét adja vissza, megfordított karaktersorrendben. Amikor az SQL kérés végrehajtódik, függvényünk visszaadja az adatbázisból kinyert fájlnév átalakított változatát. Végül az eredmény a $rows tömbbe kerül.

Kifejezetten hasznos megoldás az, mivel így nem szükséges utólag végigszaladni a kapott tömb minden elemén csak azért, hogy az átalakításokat utólag végrehajtsuk.

A PHP minden esetben létrehoz egy php néven elérhető függvényt, mely segítségével bármely PHP-ben írt függvényünket felhasználhatjuk az SQL kérésekben anélkül, hogy azt külön regisztrálnánk.

Példa 2. Példa a PHP által regisztrált php SQL függvény használatára
`<?php $rows = sqlite_array_query($dbhandle, "SELECT php('md5', filename) from files"); ?>`
A példában a PHP md5() füvvényének SQL kérésekben való használatára láthatunk példát. Az eredmény hasonlatosan az előző példához, itt is a $rows tömbben adja vissza az adatokat.

> Megjegyzés: Hatékonysági okokból A PHP nem kódolja ill. dekódolja azon bináris mezőadatokat, amelyek ilyen UDF függvényen mennek keresztül. Ilyenkor ezt magunknak kell megtennünk. A kódolás / dekódolás kapcsán a sqlite_udf_encode_binary() és a és a sqlite_udf_decode_binary() függvények leírását érdemes fellapozni még.

> Tipp: Nem ajánlott ez a módszer bináris adatok feldolgozására, legalábbis ha kicsit is számít a hatékonyság.

> Tipp: Az sqlite_create_function() és az sqlite_create_aggregate() függvények segítségével az SQLite meglevő beépített SQL függvényei is lecserélhetők.

Lásd még: sqlite_create_aggregate().

Előző | Tartalom | Következő
sqlite_create_aggregate | Fel | sqlite_current