PDO::sqliteCreateFunction
Регистрация пользовательской функции для использования в SQL-запросах
&reftitle.description;
publicboolPDO::sqliteCreateFunctionstringfunction_namecallablecallbackintnum_args-1intflags0
&warn.experimental.func;
Этот метод позволяет вам регистрировать функцию PHP как пользовательскую
функцию SQLite (User Defined Function, UDF), что позволит
использовать её в SQL-запросах.
UDF можно использовать в любом SQL-запросе, в котором позволяется использовать
функции, например SELECT, UPDATE, а также в триггерах.
&reftitle.parameters;
function_name
Имя функции для использовании в запросах.
callback
Функция обратного вызова для обработки вызовов SQL-функции.
Функция обратного вызова должна возвращать значение понятного SQLite типа
(то есть скалярного типа).
Эта функция должна быть определена следующим образом:
mixedcallbackmixedvaluemixedvaluesvalue
Первый аргумент передаваемый в SQL-функцию.
values
Последующие аргументы.
num_args
Количество аргументов, которое принимает функция. Если задать
равным -1, то функция будет принимать любое количество аргументов.
flags
Побитовая конъюнкция (ИЛИ) флагов. На данный момент поддерживается
только флаг PDO::SQLITE_DETERMINISTIC, который
определяет то, что функция всегда возвращает одинаковый результат для
одинаковых входных значений.
&reftitle.returnvalues;
&return.success;
&reftitle.changelog;
&Version;&Description;7.1.4
Добавлен параметр flags.
&reftitle.examples;
Пример использования PDO::sqliteCreateFunction
sqliteCreateFunction('md5rev', 'md5_and_reverse', 1);
$rows = $db->query('SELECT md5rev(filename) FROM files')->fetchAll();
?>
]]>
В этом примере мы определили функцию, вычисляющую md5 сумму строки и
переворачивающую её. Когда SQL-запрос будет запущен, полученные
значения filename будут преобразованы этой функцией. Результирующий набор
$rows будет содержать преобразованные значения.
Красота подобного подхода заключается в том, что вам не нужно после получения
результирующего набора пробегаться по нему циклом &foreach; для вычисления
нужных значений.
Вы можете использовать и
для переопределения
стандартных агрегирующих функций SQLite.
&reftitle.seealso;
sqlite_create_functionsqlite_create_aggregate