(PHP 8 >= 8.4.0)
Pdo\Sqlite::createFunction — Registriert eine benutzerdefinierte Funktion zur Verwendung in SQL-Anweisungen
$function_name
,$callback
,$num_args
= -1,$flags
= 0
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.
function_name
callback
Hinweis: Die Callback-Funktionen sollten einen Typ zurückgeben, der von SQLite verstanden wird, z. B. den Skalar-Typ.
Diese Funktion muss wie folgt definiert werden:
value
Das erste Argument, das an die SQL-Funktion übergeben wird.
values
Weitere Argumente, die an die SQL-Funktion übergeben werden.
num_args
-1
, dann kann die SQL-Funktion
eine beliebige Anzahl von Argumenten annehmen.
flags
Pdo\Sqlite::DETERMINISTIC
unterstützt, das angibt, dass die Funktion für dieselben Eingaben
innerhalb einer einzelnen SQL-Anweisung immer dasselbe Ergebnis
zurückgibt.
Beispiel #1 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.
<?php
function sha256_und_umkehren($string)
{
return strrev(hash('sha256', $string));
}
$db = new Pdo\Sqlite('sqlite::sqlitedb');
$db->sqliteCreateFunction('sha256rev', 'sha256_und_umkehren', 1);
$zeilen = $db->query('SELECT sha256rev(dateiname) FROM dateien')->fetchAll();
?>