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