(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_namecallback注意: 回呼函式應返回 SQLite 可理解的類型(即 純量類型)。
此函式需要定義為
value傳遞給 SQL 函式的第一個參數。
values傳遞給 SQL 函式的其他參數。
num_args-1,則 SQL 函式可以接受任何數量的參數。
flagsPdo\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();
?>