« Pdo\Sqlite::createCollation
Pdo\Sqlite::loadExtension »

Pdo\Sqlite::createFunction

(PHP 8 >= 8.4.0)

Pdo\Sqlite::createFunction — SQL 文で使用するユーザー定義関数を登録する

説明

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

PHP 関数を、ユーザー定義関数として SQLite に登録します。 登録した関数は、SQL 文の中で使用することが可能です。 ユーザー定義関数は、関数をコールできるあらゆる SQL 文 (SELECT、UPDATE 、トリガなど) から呼び出せます。

ヒント

このメソッドを使用してネイティブ SQL 関数を上書きすることができます。

パラメータ

function_name

SQL 文で使用する関数の名前。

callback

定義した SQL 関数を処理するコールバック関数。

注意:

この関数が返す値は、SQLite が理解できる形式 (すなわち スカラー型) でなければなりません。

コールバック関数の定義は次のとおりです:

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

SQL関数に渡す最初の引数

values

SQL関数に渡す2つ目以降の引数

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->createFunction('sha256rev', 'sha256_and_reverse', 1);
$rows = $db->query('SELECT sha256rev(filename) FROM files')->fetchAll();
?>

参考

関連キーワード:
Sqlite   登録   createFunction   callback   mixed   sqlite   createCollation   args   flags   SQLite   バック   values   rows   reverse   create   loadExtension   callable   トリガ   ヒント   ネイティブ   理解   スカラー   最初   任意   ビット
関連する関数・ページ:
pdo-sqlite.createcollation   pdo.sqlitecreatefunction   pdo-sqlite.createaggregate   pdo-sqlite.loadextension   pdo.sqlitecreatecollation   sqlite3.createfunction