PHP Conference Japan 2024

Pdo\Sqlite::createFunction

(PHP 8 >= 8.4.0)

Pdo\Sqlite::createFunction 註冊使用者自訂函式以用於 SQL 陳述式

說明

public Pdo\Sqlite::createFunction(
    字串 $function_name,
    可呼叫的 (Callable) $callback,
    整數 (int) $num_args = -1,
    整數 (int) $flags = 0
): 布林值 (bool)

此方法允許將 PHP 函式註冊到 SQLite 作為使用者自訂函式,以便在 SQL 查詢中呼叫。定義的函式可以在任何允許函式呼叫的 SQL 查詢中使用,例如 SELECTUPDATE 或觸發器。

提示

透過使用此方法,可以覆寫原生 SQL 函式。

參數

function_name
在 SQL 陳述式中使用的函式名稱。
callback
用於處理已定義 SQL 函式的回呼函式。

注意 回呼函式應返回 SQLite 可理解的類型(即 純量類型)。

此函式需要定義為

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