Pdo\Sqlite::createFunction
Registriert eine benutzerdefinierte Funktion zur Verwendung in SQL-Anweisungen
&reftitle.description;
publicboolPdo\Sqlite::createFunctionstringfunction_namecallablecallbackintnum_args-1intflags0
This method allows PHP function to be registered with SQLite as a
user-defined function, so that it can be called within SQL queries.
The defined function can be used in any SQL query that allows function calls,
for example SELECT, UPDATE, or triggers.
By using this method it is possible to override native SQL functions.
&reftitle.parameters;
function_name
Der Name der Funktion, der in SQL-Anweisungen genutzt wird.
callback
Die Callback-Funktion, die die definierte SQL-Funktion verarbeitet.
Die Callback-Funktionen sollten einen Typ zurückgeben, der von SQLite
verstanden wird, &zb; den
Skalar-Typ.
Diese Funktion muss wie folgt definiert werden:
mixedcallbackmixedvaluemixedvaluesvalue
Das erste Argument, das an die SQL-Funktion übergeben wird.
values
Weitere Argumente, die an die SQL-Funktion übergeben werden.
num_args
Die Anzahl von Argumenten, die die SQL-Funktion erwartet.
Ist dieser Parameter -1, dann kann die SQL-Funktion
eine beliebige Anzahl von Argumenten annehmen.
flags
Eine Bitmaske von Flags.
Zurzeit wird nur Pdo\Sqlite::DETERMINISTIC
unterstützt, das angibt, dass die Funktion für dieselben Eingaben
innerhalb einer einzelnen SQL-Anweisung immer dasselbe Ergebnis
zurückgibt.
&reftitle.returnvalues;
&return.success;
&reftitle.examples;
Pdo\Sqlite::createFunction-Beispiel
In diesem Beispiel wird eine Funktion verwendet, die die SHA256-Prüfsumme
einer Zeichenkette berechnet und anschließend umgekehrt. Wenn die
SQL-Anweisung ausgeführt wird, gibt sie den Wert des von unserer Funktion
umgewandelten Dateinamens zurück.
Die in $zeilen zurückgegebenen Daten enthalten das
verarbeitete Ergebnis.
Das Schöne an dieser Technik ist, dass das Ergebnis der Abfrage nicht in
einer &foreach;-Schleife nachbearbeitet werden muss.
sqliteCreateFunction('sha256rev', 'sha256_und_umkehren', 1);
$zeilen = $db->query('SELECT sha256rev(dateiname) FROM dateien')->fetchAll();
?>
]]>
&reftitle.seealso;
Pdo\Sqlite::createAggregatePdo\Sqlite::createCollationsqlite_create_functionsqlite_create_aggregate