sqlite_create_functionSQLiteDatabase->createFunction
Registriert eine "reguläre" nutzerdefinierte Funktion für den Gebrauch in SQL-Befehlen
&reftitle.description;
voidsqlite_create_functionresourcedbhandlestringfunction_namecallbackcallbackintnum_args-1Objektorientierter Stil (Methode):SQLiteDatabasevoidcreateFunctionstringfunction_namecallbackcallbackintnum_args-1sqlite_create_function erlaubt Ihnen, eine
PHP-Funktion in SQLite als UDF
(User Defined Function = Nutzerdefinierte Funktion) zu erzeugen,
so dass diese direkt in SQL-Befehlen genutzt werden kann.
UDF sind in jedem SQL-Befehl nutzbar, der Funktionsaufrufe wie SELECT,
UPDATE oder auch Trigger beinhalten kann.
&reftitle.parameters;
dbhandle
Die Ressource des SQLite-Ergebnisses, erzeugt von
sqlite_open wenn in prozeduralem Kontext genutzt.
Dieser Parameter wird nicht benötigt, wenn die objektorientierte
Notation genutzt wird.
function_name
Name der Funktion, wie er in den SQL-Befehlen genutzt werden soll.
callback
Eine beliebige gültige PHP-Funktion oder Methode, die aufgerufen
werden soll, um die SQL-Funktion abzuarbeiten.
"Callback"-Funktionen sollten einen Variablentyp zurückgeben, der von
SQLite erkannt wird (z.B. Skalare).
num_args
Hinweis für den SQLite-Parser auf die Parameterzahl der "Callback"-Funktion.
Es wird empfohlen, diesen Wert zu definieren, wenn Ihre Funktion immer
mit der gleichen Parameterzahl arbeitet.
&sqlite.param-compat;
&reftitle.returnvalues;
&return.void;
&reftitle.examples;
sqlite_create_function-Beispiel
]]>
In diesem Beispiel haben wir eine Funktion, die die md5-Summe eines
Strings berechnet und dann rückwärts ausliefert. Wenn der SQL-Befehl
durchgeführt wird, liefert er den Wert der Spalte "filename" durch unsere
Funktion transformiert zurück. Die Daten, die in $rows
stehen, enhalten also die bereits gewandelten Daten.
Die Eleganz dieser Technik ist das Vermeiden des Durchfahrens des kompletten
Abfrageergebnisses mit einer &foreach;-Schleife.
PHP registriert außerdem automatisch eine spezielle Funktion
mit dem Namen php, wenn die Datenbank
dbhandle zum ersten Mal geöffnet wird.
Diese Funktion kann genutzt werden, um eine beliebige PHP-Funktion
aufzurufen, ohne dass sie zunächst für SQLite erzeugt werden muss.
Beispiel zur Nutzung einer beliebigen PHP-Funktion
]]>
In diesem Beispiel wird die Funktion md5 für
jeden Eintrag der Spalte filename in der Datenbank
aufgerufen und das Ergebnis in $rows geschrieben.
Aus Performanzgründen kodiert/dekodiert PHP nicht automatisch die
Binärdaten der Spalten, die in die UDF/aus der UDF geliefert werden.
Daher müssen Sie die Parameter und Rückgabewerte der Funktion jeweils selbst
wandeln. Die Funktionen sqlite_udf_encode_binary
und sqlite_udf_decode_binary sind dabei behilflich.
Es wird empfohlen, die UDFs nicht für Binärdaten zu nutzen, wenn
Ihre Anwendung eine hohe Geschwindigkeit aufweisen soll.
sqlite_create_function und
sqlite_create_aggregate können dazu genutzt werden,
native SQlite-Funktionen zu überschreiben.
&reftitle.seealso;
sqlite_create_aggregate