PHP 8.4.2 Released!

Pdo\Sqlite::createFunction

(PHP 8 >= 8.4.0)

Pdo\Sqlite::createFunction Registriert eine benutzerdefinierte Funktion zur Verwendung in SQL-Anweisungen

Beschreibung

public Pdo\Sqlite::createFunction(
    string $function_name,
    callable $callback,
    int $num_args = -1,
    int $flags = 0
): bool

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.

Tipp

By using this method it is possible to override native SQL functions.

Parameter-Liste

function_name
Der Name der Funktion, der in SQL-Anweisungen genutzt wird.
callback
Die Callback-Funktion, die die definierte SQL-Funktion verarbeitet.

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:

callback(mixed $value, mixed ...$values): mixed
value

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.

Rückgabewerte

Gibt bei Erfolg true zurück. Bei einem Fehler wird false zurückgegeben.

Beispiele

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();
?>

Siehe auch

  • Pdo\Sqlite::createAggregate() - Registriert eine benutzerdefinierte Aggregationsfunktion zur Verwendung in SQL-Anweisungen
  • Pdo\Sqlite::createCollation() - Registers a user-defined function for use as a collating function in SQL statements
  • sqlite_create_function()
  • sqlite_create_aggregate()
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top