PDO::sqliteCreateFunction

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo_sqlite >= 1.0.0)

PDO::sqliteCreateFunction Registriert eine benutzerdefinierte Funktion (UDF) zur Nutzung in SQL-Anweisungen

Beschreibung

public PDO::sqliteCreateFunction(
    string $function_name,
    callable $callback,
    int $num_args = -1,
    int $flags = 0
): bool
Warnung

Diese Funktion ist EXPERIMENTELL. Das Verhalten, der Funktionsname und die zugehörige Dokumentation können sich in zukünftigen PHP-Versionen ohne Ankündigung ändern. Die Verwendung dieser Funktion erfolgt auf eigene Gefahr.

Diese Methode ermöglicht es, in SQLite eine PHP-Funktion als eine benutzerdefinierte Funktion (UDF) zu registrieren, die dann in einer SQL-Anweisung aufgerufen werden kann.

Die UDF kann nun in jeder SQL-Anweisung genutzt werden, die Funktionen aufrufen kann, wie SELECT und UPDATE und auch in Triggern.

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 wurde.

values

Weitere Argumente, die an die SQL-Funktion übergeben wurden.

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 bitweise Verknüpfung von Flags. Zurzeit wird nur PDO::SQLITE_DETERMINISTIC unterstützt, das angibt, dass die Funktion für dieselbe Eingabe immer dasselbe Ergebnis innerhalb einer einzelnen SQL-Anweisung zurückgibt.

Rückgabewerte

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

Changelog

Version Beschreibung
7.1.4 Der Parameter flags wurde hinzugefügt.

Beispiele

Beispiel #1 PDO::sqliteCreateFunction()-Beispiel

<?php
function md5_und_umkehren($string)
{
return
strrev(hash('md5', $string));
}

$db = new PDO('sqlite:sqlitedb');
$db->sqliteCreateFunction('md5rev', 'md5_und_umkehren', 1);
$zeilen = $db->query('SELECT md5rev(dateiname) FROM dateien')->fetchAll();
?>

In diesem Beispiel wird eine Funktion verwendet, die die md5-Checksumme einer Zeichenkette berechnet und anschließend umgekehrt. Wenn die SQL-Anweisung ausgeführt wird, gibt sie gibt sie den Wert des Dateinamens zurück, der von unserer Funktion umgewandelt wurde. Die Rückgabewerte der Funktion werden in $zeilen gespeichert.

Das Praktische an dieser Technik ist, dass das Ergebnis der Abfrage nicht in einer foreach-Schleife nachbearbeitet werden muss.

Tipp

Sie können PDO::sqliteCreateFunction und PDO::sqliteCreateAggregate nutzen, um native SQLite-SQL-Funktionen zu überschreiben.

Siehe auch

add a note

User Contributed Notes

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