7.96.14 sqlite_create_function()Enregistre une fonction utilisateur "classique" UDF pour SQLite[ Exemples avec sqlite_create_function ] CVS uniquement
bool
sqlite_create_function (
resource
dbhandle
,
string
function_name
,
mixed
callback
,
int
num_args
)
sqlite_create_function
vous permet d'enregistrer une fonction
PHP
dans SQLite comme
UDF
(Fonction Définie par l'Utilisateur,
User Defined Function), pour qu'elle soit accessible depuis les requêtes SQL.
db
spécifie une ressource de base de données SQLite,
que vous souhaitez améliorer.
function_name
spécifie
le nom de la fonction que vous utiliserez dans les requêtes SQL.
callback
peut être n'importe quelle fonction de
callback
PHP
. Le paramètre optionnel
num_args
est
utilisé par l'analyseur d'expressions SQLite. Il est recommandé que vous
fournissiez une valeur si votre fonction n'accepte qu'un nombre fixe
d'arguments.
Les UDF peuvent être utilisées dans n'importe quelle requête SQL qui peut
appeler des fonctions, telles que SELECT et UPDATE, ou même des triggers.
Exemple avec sqlite_create_function |
<?php function md5_and_reverse($string) { return strrev(md5($string)); }
sqlite_create_function($db, 'md5rev', 'md5_and_reverse', 1);
$rows = sqlite_array_query($db, 'SELECT md5rev(filename) from files'); ?>
|
Dans cet exemple, nous avons une fonction qui calcule la somme de contrôle
MD5 d'une chaîne, et l'inverse. Lorsque la requête SQL s'exécute,
elle retourne le nom du fichier, transformé par cette opération.
Les données retournées dans
$rows
contient le
résultat.
La beauté de cette technique est que vous n'avez pas à traiter vous même
les données avec une boucle, une fois que vous avez lu les données.
PHP
enregistre une fonction spéciale appelée
php
lorsque
la base est ouverte. Cette fonction est utilisée pour appeler toute fonction
PHP
sans avoir à l'enregistrer au préalable.
Exemple d'utilisation d'une fonction PHP dans SQLite |
<?php $rows = sqlite_array_query($db, "SELECT php('md5', filename) from files"); ?>
|
Note |
Pour des raisons de performances,
PHP
ne va pas automatiquement
coder ou décoder les données binaires passées à votre UDF. Vous devez le faire
manuellement. Voyez les fonctions
sqlite_udf_encode_binary
et
sqlite_udf_decode_binary
pour plus de détails.
|
Array
Array
Voir aussi
sqlite_create_aggregate
.
|