KKUT Docs

Hazırlanmış Sorgular ve Parametre Bağlama

Ham SQL değerlerini sorgu metnine eklemeden sürücünün prepared statement mekanizmasına bağlayın.

This article is currently available in Turkish. Its English translation is being prepared.

KUT'un DB::query() ve DB::execQuery() yöntemlerindeki ikinci dizi parametresi gerçek prepared statement bağlamasıdır. Değerler SQL metnine birleştirilmez; etkin veritabanı sürücüsüne ayrı gönderilir.

Konumsal parametreler

$account = DB::query(
    'SELECT * FROM accounts WHERE email = ? AND status = ?',
    [$email, 'active']
)->row();

Aynı sözleşme zincirli secure() kullanımıyla korunur:

$account = DB::secure([$email, 'active'])
    ->query('SELECT * FROM accounts WHERE email = ? AND status = ?')
    ->row();

Adlandırılmış parametreler

$invoice = DB::query(
    'SELECT * FROM invoices WHERE id = :id AND account_id = :account',
    [':id' => $invoiceId, ':account' => $accountId]
)->row();

Adlar : ile başlamalı ve harf, sayı veya alt çizgi içermelidir. Aynı ad SQL içinde birden çok kez kullanılırsa değer sürücünün gerektirdiği her konuma ayrı bağlanır. Konumsal parametre sayısı ile ? sayısı eşleşmezse sorgu çalıştırılmaz.

Yazma sorguları

$changed = DB::execQuery(
    'UPDATE accounts SET last_ip = ? WHERE id = ?',
    [$ip, $accountId]
);

Query Builder

where(), insert() ve update() gibi Query Builder yöntemleri kendi değer sözleşmesini korur. Dinamik tablo, kolon, sıralama yönü veya SQL anahtar kelimesi parametre olarak bağlanamaz; bunlar uygulama allowlist'inden seçilmelidir.

Çoklu sorgu sınırı

multiQuery() parametre kabul etmez. Birden fazla SQL deyimini kullanıcı verisiyle birlikte göndermeyin. Her deyimi ayrı prepared query()/execQuery() çağrısı olarak, gerekiyorsa transaction içinde çalıştırın.

Desteklenen sürücüler ve doğrulama

MySQLi, PostgreSQL, SQLite, SQL Server, Oracle ve ODBC sürücüleri ortak bağlama sözleşmesini kendi native API'lerine çevirir. Seçili bağlantıda salt-okuma doğrulaması:

php buyruk --project=Blog database:prepared-check

Komut tırnak, ters eğik çizgi ve Unicode içeren bir değeri SELECT ? ile bağlar; veri aynı dönmezse sıfır olmayan çıkış kodu üretir.

Log ve önbellek

Sorgu günlüğü SQL şablonunu kaydeder, bağlı değerleri yazmaz. Sorgu önbelleği anahtarı SQL ile birlikte parametrelerin özetini içerir; farklı parametreler aynı cache sonucunu paylaşmaz.

KUT Framework 1.0Katmanlı Uygulama Tabanı

Kur. Uyarla. Türet.