PHP Conference Japan 2024

Pdo\Sqlite::createFunction

(PHP 8 >= 8.4.0)

Pdo\Sqlite::createFunction 注册用户定义函数以供 SQL 语句使用

描述

public Pdo\Sqlite::createFunction(
    string $function_name,
    callable $callback,
    int $num_args = -1,
    int $flags = 0
): bool

此方法允许将 PHP 函数注册到 SQLite 作为用户定义函数,以便可以在 SQL 查询中调用它。定义的函数可以在任何允许函数调用的 SQL 查询中使用,例如 SELECTUPDATE 或触发器。

提示

通过使用此方法,可以覆盖本机 SQL 函数。

参数

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

示例

示例 #1 Pdo\Sqlite::createFunction() 示例

在此示例中,我们有一个函数,它计算字符串的 SHA256 校验和,然后将其反转。当 SQL 语句执行时,它返回由我们的函数转换的文件名值。 $rows 中返回的数据包含处理后的结果。

此技术的优点是,在查询后无需使用 foreach 循环处理结果。

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

$db = new Pdo\Sqlite('sqlite::sqlitedb');
$db->sqliteCreateFunction('sha256rev', 'sha256_and_reverse', 1);
$rows = $db->query('SELECT sha256rev(filename) FROM files')->fetchAll();
?>

参见

添加注释

用户贡献的注释

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