|
(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 $rows geschrieben. |
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 |
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 17:57:08