PHP 매뉴얼
이전 |  | 다음

# sqlite_create_function

(PHP 5)

sqlite_create_function -- Registers a "regular" User Defined Function for use in SQL statements.

## Description

bool sqlite_create_function ( resource dbhandle, string function_name, mixed callback [, int num_args])

sqlite_create_function() allows you to register a PHP function with SQLite as an UDF (User Defined Function), so that it can be called from within your SQL statements.

`dbhandle` specifies the database handle that you wish to extend, `function_name` specifies the name of the function that you will use in your SQL statements, `callback` is any valid PHP callback to specify a PHP function that should be called to handle the SQL function. The optional parameter `num_args` is used as a hint by the SQLite expression parser/evaluator. It is recommended that you specify a value if your function will only ever accept a fixed number of parameters.

The UDF can be used in any SQL statement that can call functions, such as SELECT and UPDATE statements and also in triggers.

예 1. sqlite_create_function() example

`<?php function md5_and_reverse($string) { return strrev(md5($string)); } if ($dbhandle = sqlite_open('mysqlitedb', 0666, $sqliteerror)) { sqlite_create_function($dbhandle, 'md5rev', 'md5_and_reverse', 1); $sql = 'SELECT md5rev(filename) FROM files'; $rows = sqlite_array_query($dbhandle, $sql); } else { echo 'Error opening sqlite db: ' . $sqliteerror; exit; } ?>`

In this example, we have a function that calculates the md5 sum of a string, and then reverses it. When the SQL statement executes, it returns the value of the filename transformed by our function. The data returned in `$rows` contains the processed result.

The beauty of this technique is that you do not need to process the result using a foreach() loop after you have queried for the data.

PHP registers a special function named `php` when the database is first opened. The php function can be used to call any PHP function without having to register it first.

예 2. Example of using the PHP function

`<?php $rows = sqlite_array_query($dbhandle, "SELECT php('md5', filename) from files"); ?>`

This example will call the md5() on each `filename` column in the database and return the result into `$rows`

> 참고: For performance reasons, PHP will not automatically encode/decode binary data passed to and from your UDF's. You need to manually encode/decode the parameters and return values if you need to process binary data in this way. Take a look at sqlite_udf_encode_binary() and sqlite_udf_decode_binary() for more details.

> 작은 정보: It is not recommended to use UDF's to handle processing of binary data, unless high performance is not a key requirement of your application.

> 작은 정보: You can use sqlite_create_function() and sqlite_create_aggregate() to override SQLite native SQL functions.

See also sqlite_create_aggregate().

이전 | 처음으로 | 다음
sqlite_create_aggregate | 위로 | sqlite_current