(PHP 5)
sqlite_create_function -- Erzeugt eine "reguläre" nutzerdefinierte Funktion für den Gebrauch in SQL-Befehlen.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.
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 2. 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 |
Anmerkung: 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.
Tipp: 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().
Zurück | Zum Anfang | Weiter |
sqlite_create_aggregate | Nach oben | sqlite_current |