(PHP 5 >= 5.1.0, PHP 7, PECL pdo_sqlite >= 1.0.0)
PDO::sqliteCreateFunction — Registriert eine benutzerdefinierte Funktion (UDF) zur Nutzung in SQL-Anfragen
$function_name
, callable $callback
[, int $num_args
= -1
[, int $flags
= 0
]] ) : boolDiese Funktion ist EXPERIMENTELL. Das Verhalten, der Funktionsname und alles Andere, was hier dokumentiert ist, kann sich in zukünftigen PHP-Versionen ohne Ankündigung ändern. Seien Sie gewarnt und verwenden Sie diese Funktion auf eigenes Risiko.
Diese Methode erlaubt es, eine PHP-Funktion als eine benutzerdefinierte Funktion (UDF) in SQLite zu registrieren, die dann in einer SQL-Anfrage aufgerufen werden kann.
Die UDF kann nun in jeder SQL-Anfrage genutzt werden, die Funktionen aufrufen kann, wie SELECT und UPDATE und auch in Triggern.
function_name
Der Name der Function, der in SQL-Anfragen genutzt wird.
callback
Die Callback-Funktion, die die definierte SQL-Funktion verarbeitet.
Hinweis: Die Callback-Funktionen sollten einen Typen zurückgeben, der von SQLite verstanden wird, z.B. Skalar Typ.
Diese Funktion muss wie folgt definiert werden:
value1
Das erste Argument, dass an die SQL-Funktion übergeben wurde.
...
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 die selbe Eingabe immer das selbe Ergebnis
innerhalb einer einzelnen SQL-Abfrage zurückliefert.
Gibt bei Erfolg TRUE
zurück. Im Fehlerfall wird FALSE
zurückgegeben.
Version | Beschreibung |
---|---|
7.1.4 |
Der flags Parameter wurde hinzugefügt.
|
Beispiel #1 PDO::sqliteCreateFunction()-Beispiel
<?php
function md5_and_reverse($string)
{
return strrev(md5($string));
}
$db = new PDO('sqlite:sqlitedb');
$db->sqliteCreateFunction('md5rev', 'md5_and_reverse', 1);
$rows = $db->query('SELECT md5rev(filename) FROM files')->fetchAll();
?>
In diesem Beispiel beschreiben wir eine Funktion, die die md5-Checksumme einer Zeichenkette berechnet und anschließend wird die Checksumme umgekehrt. Aufgerufen durch die SQL-Anfrage, gibt sie den durch die Funktion geänderten Dateinamen zurück. Die Rückgabewerte der Funktion werden in $rows gespeichert.
Das Praktische an dieser Technik ist, dass das Ergebnis der Abfrage nicht in einer foreach-Schleife nachbearbeitet werden muss.
Sie können PDO::sqliteCreateFunction und PDO::sqliteCreateAggregate nutzen, um SQLites native SQL-Funktionen zu überschreiben.
Hinweis:
Diese Methode ist im SQLite2-Treiber nicht verfügbar. Benutzen Sie stattdessen die alte SQLite-API.