PHP Handbuch
Zurück |  | Weiter

# sqlite_create_function

(PHP 5)

sqlite_create_function -- Erzeugt eine "reguläre" nutzerdefinierte Funktion für den Gebrauch in SQL-Befehlen.

## Beschreibung

bool sqlite_create_function ( resource db, string SQL-Funktionsname, mixed callback [, int num_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.

Beispiel 1. sqlite_create_function() Beispiel

`<?php function md5_rueckwaerts($string) { return strrev(md5($string)); } sqlite_create_function($db, 'md5rw', 'md5_rueckwaerts', 1); $rows = sqlite_array_query($db, 'SELECT md5rw(filename) from files'); ?>`

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

`<?php $rows = sqlite_array_query($db, "SELECT php('md5', filename) from files"); ?>`

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