(PHP 5 < 5.4.0, sqlite >= 1.0.0)
sqlite_create_function -- SQLiteDatabase->createFunction — SQL deyimlerinde kullanmak üzere bir kullanıcı tanımlı işlevi kayda geçirir
$db
, string $işlev_adı
, callback $geriçağırım
[, int $değ_sayısı
= -1
] )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.
db
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.
işlev_adı
SQL deyiminde kullanılacak işlevin adı.
geriçağırım
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).
değ_sayısı
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.