(PHP 5, sqlite >= 1.0.0)
sqlite_create_function -- SQLiteDatabase->createFunction — SQL deyimlerinde kullanmak üzere bir kullanıcı tanımlı işlevi kayda geçirir
Nesne yönelimli kullanım
SQL deyimlerinde kullanmak üzere bir kullanıcı tanımlı işlevi kayda geçirir.
Kullanıcı tanımlı işlevler, işlev çağırabilen SQL deyimlerinde kulllanılır. SELECT ve UPDATE deyimlerinden başka tetikleyiciler de işlev çağırabilmektedir.
SQLite Veritabanı özkaynağı. Yordamsal kullanımda sqlite_open() işlevi tarafından döndürülür. Nesne yönelimli kullanımda bu değiştirgeye gerek yoktur.
SQL deyiminde kullanılacak işlevin adı.
Tanımlanan SQL işlevini elde edecek geriçağırım işlevi.
Bilginize: Geriçağırım işlevlerinin SQLite'ın tanıdığı veri türlerini döndürmesi gerekir (bir sayıl tür gibi).
Geriçağırım işlevi belli sayıda değiştirge gerektiriyorsa SQLite çözümleyiciye bir ipucu vermek için kullanılır.
Bilginize: Diğer veritabanı eklentileri (MySQL gibi) ile uyumluluk için iki ayrı sözdizimi desteklenmektedir. Genelde tercih edilen sözdizimi db değiştirgesinin ilk değiştirge olarak kullanıldığı ilk sözdizimidir.
Hiçbir değer dönmez.
Örnek 1 - sqlite_create_function() örneği
<?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 'sqlite veritabanı açılırken hata: ' . $sqliteerror;
exit;
}
?>
Bu örnekte, bir dizgenin MD5 toplamını hesaplayıp bunu ters çeviren bir işlev tanımlanmaktadır. SQL deyimi çalıştırıldığında işlevimiz dosya isminin dönüştürülmüş değerini döndürmektedir. $rows sonucu içerecektir.
Bu tekniğin güzel tarafı veriyi sorguladıktan sonra sonucu işlemek için bir foreach döngüsü kullanımını gerektirmemesidir.
Veritabanı ilk açıldığında PHP, php adında bir işlevi kayda geçirir. Yeni bir isim kaydetmek zorunda kalmadan php ismini işlev_adı olarak kullanabilirsiniz.
Örnek 2 - php işlevi kullanım örneği
<?php
$rows = sqlite_array_query($dbhandle, "SELECT php('md5', dosya) from files");
?>
Bu örnek veritabanındaki her dosya sütunu için md5() işlevini çağırır ve sonucu $rows içinde döndürür.
Bilginize:
Başarımı arttırmak amacıyla PHP, kullanıcı tanımlı işleve aktarılan ve ondan dönen ikil verileri özdevinimli olarak kodlamaz veya çözümlemez. Bu yöntemde ikil veriler kullanmak istiyorsanız ikil verileri kodlama ve çözme işlemlerini kendiniz gerçeklemelisiniz. Bu konuda daha ayrıntılı bilgi edinmek için sqlite_udf_encode_binary() ve sqlite_udf_decode_binary() işlevinin açıklamasına bakınız.
Başarımı arttırmak uygulamanız için vazgeçilmezlerdense kullanıcı tanımlı işlevlerde ikil verileri işlemeniz önerilmez.
sqlite_create_function() ve sqlite_create_aggregate() işlevlerini SQLite'ın dahili SQL işlevlerini geçersiz kılmak için kullanabilirsiniz.