sqlite_create_function
SQLiteDatabase::createFunction
SQLステートメントで使用するために"通常の"ユーザー定義関数を登録する
&reftitle.description;
voidsqlite_create_function
resourcedbhandle
stringfunction_name
callablecallback
intnum_args-1
&style.oop; (メソッド):
voidSQLiteDatabase::createFunction
stringfunction_name
callablecallback
intnum_args-1
sqlite_create_function により、SQLiteにPHP関数
をUDF (ユーザー定義関数)として登録することが可能で
す。この関数は、SQLステートメントの中からコールできます。
UDFは、SELECTおよびUPDATEステートメント、そして、トリガーの中のよう
に関数をコールできる全てのSQLステートメントで使用可能です。
&reftitle.parameters;
dbhandle
SQLite データベースリソース。手続きに従って、
sqlite_open から返されます。
このパラメータは、
オブジェクト指向言語型メソッドを使用する場合は不要です。
function_name
SQL ステートメントで使用する関数名
callback
定義された SQL 関数を処理するためのコールバック関数
コールバック関数は SQLite で有効な型
(例えば スカラー型)
を返す必要があります
num_args
コールバック関数が規定の引数の数を受け入れるかどうかを決定するため
SQLite パーサに渡すヒント
&sqlite.param-compat;
&reftitle.returnvalues;
&return.void;
&reftitle.examples;
sqlite_create_function の例
]]>
この例では、文字列のMD5サムを計算し、順番を反転する関数が記述されています。
このSQLステートメントが実行された場合、
関数により変換されたファイル名の値を返します。
$rows により返されるデータには、
処理結果が含まれています。
この技術の美しいところは、データのクエリーを実行した後で
&foreach; ループにより結果を処理する必要がないことです。
PHP は、データベースが最初にオープンされる際に
php という名前の特別な関数を登録します。
このphp関数は、事前に登録することなしにあらゆるPHP関数をコールする
ために使用可能です。
PHP 関数の使用例
]]>
この例は、データベースの各 filename カラムにつ
いて md5 をコールし、その結果を
$rowsに返します。
性能上の理由から、PHPはUDFとの間で送受信されるバイナリデータを自動
的にエンコード/デコードしません。この方法でバイナリデータを処理す
る必要がある場合、パラメータを手動でエンコード/デコードし、
値を返すようにする必要があります。
詳細については、sqlite_udf_encode_binary
およびsqlite_udf_decode_binaryを参照して下さ
い。
適用するアプリケーションの主要な要求が高い性能でない限り、バイナリ
データの処理を行うためにUDFを使用することは推奨されません。
SQLiteのネーティブSQL関数をオーバーライドするために
sqlite_create_functionおよび
sqlite_create_aggregateも使用可能です。
&reftitle.seealso;
sqlite_create_aggregate