From: Enver ALTIN (enver.altin@frontsite.com.tr)
Date: Mon 23 Jun 2003 - 14:41:46 EEST
On Mon, 2003-06-23 at 17:09, Burak DAYIOGLU wrote:
> On Mon, 2003-06-23 at 11:21, Enver ALTIN wrote:
> > require_once("DB.php");
> > $db=DB::connect("mysql://user:pass@host+unix/dbname");
> > $sql=$db->query("select * from table where field1=?,field2=?", array($avalue, $asecondvalue));
>
> Merhaba,
Merhaba,
> $avalue ve $asecondvalue'nun benim onerdigim gibi denetimden
> gecirildigini varsayiyorsunuz oyle degil mi? Aksi kabul edilebilir
> degil... Emin olmak icin soruyorum...
Hayir, bahsettiginiz gibi bir denetim gerekmiyor.
PEAR kutuphanesi yada diger araclarin yaptigi is (saniyorum tahmininiz
bu) "?" ile verilen parametreleri sirasiyla replace etmek degil. SQL
sunucunun client kutuphanesi SQL sorgusunu ve parametreleri birbirinden
ayri olarak tasiyor ve tum SQL sunucular, bu paremetreleri asil SQL
sorgusunun icerigine bulastirmaksizin ayri bellek bolgelerinde sadece
kiyaslama islemlerinde kullaniyorlar.
Parametrik sorgu kullanmak akilli RDBMS sunucusunda performans artisi
saglar (PostgreSQL, Oracle, InterBase/Firebird, Sybase, Informix, MS-SQL
bunlardan birkaci ancak MySQL bu kategoride degil). Parametrik SQL
sorgular ilk calistirildiklarinda bunlar icin (aslinda tum sorgular
icin) bir optimization plan hazirlanir. Ayni sorgu ikinci kez
calistirildiginda bu islemler daha once yapildigindan ikinci kez
optimization uygulanmaz, daha hizli index/search yapilir ve sorgu
calistirma suresi onemli olcude kisalir.
PS: PHP'deki tum veritabani sunuculari icin *_query() fonksiyonlari ile
parametrik query kullanabilirsiniz.
PS2: Bircok SQL sunucusu ard arda bircok kez calistiracaginiz sorgular
icin prepare(), execute() destekler.
Saygilar
-- -------------------------------------------------------------------- Enver ALTIN (a.k.a. skyblue) - enver.altin@frontsite.com.tr Software developer, IT consultant frontsite Bilgi Teknolojisi A.S. tel: +90 212 356 16 35 (pbx) fax: +90 212 356 16 36 --------------------------------------------------------------------