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 作为 UDF(用户定义函数),以便可以在 SQL 语句中调用它。

UDF 可以用于任何可以调用函数的 SQL 语句,例如 SELECT 和 UPDATE 语句,以及触发器。

参数

function_name

SQL 语句中使用的函数名称。

callback

处理已定义 SQL 函数的回调函数。

注意: 回调函数应返回 SQLite 理解的类型(即 标量类型)。

此函数需要定义为

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

传递给 SQL 函数的第一个参数。

values

传递给 SQL 函数的更多参数。

num_args

SQL 函数接受的参数数量。如果此参数为 -1,则 SQL 函数可以接受任意数量的参数。

flags

标志的按位连接。目前,只支持 PDO::SQLITE_DETERMINISTIC,它指定函数在单个 SQL 语句中对于相同的输入始终返回相同的结果。

返回值

成功时返回 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 语句执行时,它返回经过我们的函数转换的文件名的值。在 $rows 中返回的数据包含已处理的结果。

此技术的妙处在于,您无需在查询数据后使用 foreach 循环来处理结果。

提示

您可以使用 PDO::sqliteCreateFunctionPDO::sqliteCreateAggregate 来覆盖 SQLite 本机 SQL 函数。

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top