PHP Handbuch
Zurück |  | Nach vorne

# 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 | Nach vorne
sqlite_create_aggregate | Nach oben | sqlite_current