PHP 8.4.1 Released!

PDO::sqliteCreateFunction

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

PDO::sqliteCreateFunction Регистрация пользовательской функции для использования в SQL-запросах

Описание

public PDO::sqliteCreateFunction(
    string $function_name,
    callable $callback,
    int $num_args = -1,
    int $flags = 0
): bool
Внимание

Это ЭКСПЕРИМЕНТАЛЬНАЯ функция. Не исключается, что поведение, название и документацию функции изменят без уведомления в следующих версиях PHP. За включение функции в код отвечает программист.

Этот метод позволяет вам регистрировать функцию PHP как пользовательскую функцию SQLite (User Defined Function, UDF), что позволит использовать её в SQL-запросах.

UDF можно использовать в любом SQL-запросе, в котором позволяется использовать функции, например SELECT, UPDATE, а также в триггерах.

Список параметров

function_name

Имя функции для использовании в запросах.

callback

Функция обратного вызова для обработки вызовов SQL-функции.

Замечание: Функция обратного вызова должна возвращать значение понятного SQLite типа (то есть скалярного типа).

Эта функция должна быть определена следующим образом:

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

Первый аргумент передаваемый в SQL-функцию.

values

Последующие аргументы.

num_args

Количество аргументов, которое принимает функция. Если задать равным -1, то функция будет принимать любое количество аргументов.

flags

Побитовая конъюнкция (ИЛИ) флагов. На данный момент поддерживается только флаг PDO::SQLITE_DETERMINISTIC, который определяет то, что функция всегда возвращает одинаковый результат для одинаковых входных значений.

Возвращаемые значения

Функция возвращает true в случае успешного выполнения или false, если возникла ошибка.

Список изменений

Версия Описание
7.1.4 Добавлен параметр flags.

Примеры

Пример #1 Пример использования PDO::sqliteCreateFunction()

<?php

function md5_and_reverse($string)
{
return
strrev(hash('md5', $string));
}

$db = new PDO('sqlite:sqlitedb');
$db->sqliteCreateFunction('md5rev', 'md5_and_reverse', 1);
$rows = $db->query('SELECT md5rev(filename) FROM files')->fetchAll();

?>

В примере определили функцию, которая вычисляет md5-сумму строки и переворачивает её. Когда SQL-запрос выполнится, он вернёт значение имени файла из столбца filename, которое преобразует функция. Данные, которые вернулись в переменную $rows, содержат преобразованный результат.

Красота этой техники заключается в том, что программисту не требуется перебирать результаты в цикле foreach после запроса данных.

Подсказка

Вы можете использовать PDO::sqliteCreateFunction и PDO::sqliteCreateAggregate для переопределения стандартных агрегирующих функций SQLite.

Смотрите также

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top