Hazırlanmış İfadeler ve Parametre Bağlama
SQL enjeksiyonunu önlemek için prepare, bindParam ve execute kullanın.
Hazırlanmış İfadeler ve Parametre Bağlama, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, PHP Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. PHP Academy kursu toplamda 4 dersten oluşur.
Hazırlanmış İfadeler Neden Kullanılır
Hazırlanmış ifadeler SQL yapısını verilerden ayırır. Kullanıcı girdisi her zaman bir değer olarak ele alınır; hiçbir zaman SQL kodu olarak değerlendirilmez. Böylece SQL ekleme saldırısı mümkün olmaz.
prepare() + execute()
Temel akış şöyledir: yer tutucularla hazırlayın, ardından değerlerle çalıştırın.
<?php
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute([$_POST["email"]]);
$user = $stmt->fetch();Adlandırılmış Yer Tutucular
Açıklık için adlandırılmış yer tutucular (:name) kullanın; özellikle aynı değer birden çok kez kullanılıyorsa.
<?php
$stmt = $pdo->prepare(
"INSERT INTO users (name, email) VALUES (:name, :email)"
);
$stmt->execute([':name' => "Alice", ':email' => "alice@example.com"]);bindParam ve bindValue
bindParam bir değişkeni başvuru yoluyla bağlar; değer çalıştırma sırasında okunur. bindValue ise bir değeri hemen bağlar.
<?php
$name = "Bob";
$stmt = $pdo->prepare("INSERT INTO users (name) VALUES (:name)");
$stmt->bindParam(":name", $name);
$name = "Carol";
$stmt->execute(); // inserts "Carol"bindValue Örneği
Değeri bağlama anında sabitlemek istediğinizde bindValue kullanın.
<?php
$stmt = $pdo->prepare("SELECT * FROM products WHERE price < :max");
$stmt->bindValue(":max", 50.00, PDO::PARAM_INT);
$stmt->execute();Tür Sabitleri
İsteğe bağlı üçüncü parametre veri türünü belirtir: PDO::PARAM_INT, PDO::PARAM_STR, PDO::PARAM_BOOL, PDO::PARAM_NULL.
İfadeleri Yeniden Çalıştırma
Hazırlanmış bir ifade birden çok kez çalıştırılabilir; sorgu sunucuda bir kez derlenir.
<?php
$stmt = $pdo->prepare("INSERT INTO logs (msg) VALUES (:msg)");
foreach ($messages as $msg) {
$stmt->execute([':msg' => $msg]);
}rowCount()
INSERT/UPDATE/DELETE sonrasında rowCount(), kaç satırın etkilendiğini döndürür.
<?php
$stmt = $pdo->prepare("DELETE FROM users WHERE active = 0");
$stmt->execute();
echo $stmt->rowCount()." users deleted";lastInsertId()
Bir INSERT işleminden sonra otomatik artan birincil anahtarı $pdo->lastInsertId() ile alın.
<?php
$stmt = $pdo->prepare("INSERT INTO articles (title) VALUES (:t)");
$stmt->execute([':t' => "My Post"]);
$newId = $pdo->lastInsertId();Kullanıcı Girdisini Asla Birleştirmeyin
Şunu asla yapmayın: "SELECT * FROM users WHERE name = '".$name."'". Girdiyi "temizlemiş" olsanız bile her zaman yer tutucuları kullanın.
PDOStatement Nesnesi
prepare(), şu yöntemlere sahip bir PDOStatement döndürür: execute(), fetch(), fetchAll(), bindParam(), bindValue(), rowCount().
Özet
Dış kaynaklı veriler içeren sorgular için her zaman hazırlanmış ifadeleri kullanın. Adlandırılmış yer tutucuları tercih edin. Anlık değerler için bindValue, döngü bağlamaları için bindParam kullanın.
Hızlı Kontrol
bindParam değerini ne zaman okur?
Sıkça Sorulan Sorular
“Hazırlanmış İfadeler ve Parametre Bağlama” dersi ücretsiz mi?
Evet — “Hazırlanmış İfadeler ve Parametre Bağlama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve PHP Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. PHP Academy kursu toplamda 4 dersten oluşur.
“Hazırlanmış İfadeler ve Parametre Bağlama” dersinde ne öğreneceğim?
SQL enjeksiyonunu önlemek için prepare, bindParam ve execute kullanın. PHP Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
PHP Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te PHP Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Hazırlanmış İfadeler ve Parametre Bağlama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu PHP Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her PHP Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- PDO ile MySQL'e Bağlanma
- Hazırlanmış İfadeler ve Parametre Bağlama
- PDO ile Sonuçları Alma
- PDO ile İşlemler