sqlite_create_function
Erzeugt eine "reguläre" nutzerdefinierte Funktion für den Gebrauch in SQL-Befehlen.
Beschreibung
boolsqlite_create_function
resourcedb
stringSQL-Funktionsname
mixedcallback
intnum_args
sqlite_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.
db spezifiziert die Datenbank, die um die Funktion
erweitert werden soll, SQL-Funktionsname den Namen
der Funktion, wie er in den SQL-Befehlen genutzt werden soll.
callback ist eine beliebige gültige PHP-Funktion oder
Methode, die aufgerufen werden soll, um die SQL-Funktion abzuarbeiten.
Der optionale Parameter num_args wird vom
SQLite-Parser als Hinweis auf die Parameterzahl genutzt.
Es wird empfohlen, diesen Wert zu definieren, wenn Ihre Funktion immer
mit der gleichen Parameterzahl arbeitet.
Die UDF kann in jedem SQL-Befehl, der Funktionsaufrufe beinhalten
kann, genutzt werden, wie z.B. SELECT, UPDATE oder auch Trigger.
sqlite_create_function Beispiel
]]>
In diesem Beispiel haben wir eine Funktion, die die md5-Summe eines
Strings berechnet und dann rueckwaerts 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 ausserdem automatisch eine spezielle Funktion
mit dem Namen php
wenn die Datenbank db 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 der Nutzung einer 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 Performancegrü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.
Es wird empfohlen, die UDFs nicht für Binärdaten zu nutzen, wenn
Ihre Anwendung eine hohe Geschwindigkeit aufweisen soll.
Siehe auch sqlite_register_aggregate.