sqlite_create_function

SQLiteDatabase->createFunction

(PHP 5 < 5.4.0, sqlite >= 1.0.0)

sqlite_create_function -- SQLiteDatabase->createFunctionSQL deyimlerinde kullanmak üzere bir kullanıcı tanımlı işlevi kayda geçirir

Açıklama

sqlite_create_function ( resource $db , string $işlev_adı , callback $geriçağırım [, int $değ_sayısı = -1 ] ) : void

Nesne yönelimli kullanım

createFunction ( string $işlev_adı , callback $geriçağırım [, int $değ_sayısı = -1 ] ) : void

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.

Değiştirgeler

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.

Dönen Değerler

Hiçbir değer dönmez.

Örnekler

Ö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.

İpucu

Başarımı arttırmak uygulamanız için vazgeçilmezlerdense kullanıcı tanımlı işlevlerde ikil verileri işlemeniz önerilmez.

İpucu

sqlite_create_function() ve sqlite_create_aggregate() işlevlerini SQLite'ın dahili SQL işlevlerini geçersiz kılmak için kullanabilirsiniz.

Ayrıca Bakınız

  • sqlite_create_aggregate() - SQL deyimlerinde kullanmak üzere toparlayıcı bir kullanıcı tanımlı işlevi kayda geçirir