(PHP 8 >= 8.4.0)
Pdo\Sqlite::createFunction — 註冊使用者自訂函式以用於 SQL 陳述式
$function_name
,$callback
,$num_args
= -1,$flags
= 0此方法允許將 PHP 函式註冊到 SQLite 作為使用者自訂函式,以便在 SQL 查詢中呼叫。定義的函式可以在任何允許函式呼叫的 SQL 查詢中使用,例如 SELECT
、UPDATE
或觸發器。
透過使用此方法,可以覆寫原生 SQL 函式。
function_name
callback
注意: 回呼函式應返回 SQLite 可理解的類型(即 純量類型)。
此函式需要定義為
value
傳遞給 SQL 函式的第一個參數。
values
傳遞給 SQL 函式的其他參數。
num_args
-1
,則 SQL 函式可以接受任何數量的參數。
flags
Pdo\Sqlite::DETERMINISTIC
,它指定在單個 SQL 陳述式中,給定相同的輸入,函式始終返回相同的結果。
範例 #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();
?>