CodeBlanks Logo Icon CodeBlanks

bindParam() ile parametre bağlama

PHP kursu · İleri seviye · Ders 10/92

bindParam() ile değişken referansını parametreye bağlamayı öğrenirsin.

bindParam() referans ile bağlar

bindParam() bir değişkeni yer tutucuya referans olarak bağlar. Değeri bağlandığı anda değil, execute() çağrıldığında okur. Bu sayede değişkeni bağladıktan sonra değerini değiştirebilir, aynı $stmt ile birden çok ekleme yapabilirsin.

Pozisyonel yer tutucularda ilk argüman indeks (1, 2, …), adlandırılmışta ise ':isim' dizesidir. Üçüncü argüman tür sabitidir.

Bu yöntem özellikle döngü içinde tekrar tekrar ekleme yaparken kullanışlıdır.

Tür sabitleri ve sonuç yöntemleri

bindParam() ve bindValue() üçüncü argüman olarak bir tür sabiti alır: PDO::PARAM_STR metin, PDO::PARAM_INT tamsayı, PDO::PARAM_BOOL mantıksal, PDO::PARAM_NULL boş değer için.

INSERT sonrası iki yararlı yöntem vardır: $pdo->lastInsertId() eklenen son satırın kimliğini döndürür; $stmt->rowCount() etkilenen satır sayısını verir.

Bu yöntemlerle eklemenin başarılı olduğunu ve yeni kaydın kimliğini doğrularsın.

Uygulama bindParam ile INSERT yap

prepare() ile 'INSERT INTO users (name, email) VALUES (?, ?)' şablonu hazırla. $name ve $email değişkenlerini bindParam(1, $name, PDO::PARAM_STR) ve bindParam(2, $email, PDO::PARAM_STR) ile bağla. Değişkenlere değer ata ('Ayşe' ve 'ayse@example.com'), execute() çağır. $pdo->lastInsertId() ve $stmt->rowCount() sonuçlarını satır satır yazdır.

Örnek çözümü göster
:PARAM_STR) ve $stmt->bindParam(2, $email, PDO::PARAM_STR) çağır. $name = 'Ayşe' ve $email = 'ayse@example.com' ata. $stmt->execute() çalıştır. echo $pdo->lastInsertId() . "\n" ve echo $stmt->rowCount() . "\n" yazdır.
Örnek çözüm:
<?php
// bindParam ile değişken referansını bağla ve INSERT yap

$pdo = new PDO('sqlite::memory:');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)");

$name = '';
$email = '';
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bindParam(1, $name, PDO::PARAM_STR);
$stmt->bindParam(2, $email, PDO::PARAM_STR);
$name = 'Ayşe';
$email = 'ayse@example.com';
$stmt->execute();
echo $pdo->lastInsertId() . "\n";
echo $stmt->rowCount() . "\n";

Kendini test et

  1. bindParam kavramlarını eşleştir

    bindParam()
    Değişkeni referans ile bağlar
    PDO::PARAM_STR
    Metin türü sabiti
    PDO::PARAM_INT
    Tamsayı türü sabiti
    1, 2, ...
    Pozisyonel parametre indeksi
  2. bindParam() değişkenin değerini ne zaman okur?

    • Bağlandığı anda, hemen
    • execute() çağrıldığında
    • prepare() çağrıldığında
    • fetch() çağrıldığında
    Cevabı göster

    execute() çağrıldığında — Doğru! bindParam() referans tutar; değeri execute() anında okur.

  3. bindParam() çağrısını tamamla

    $stmt->____(1, $name, PDO::PARAM_STR);
    Cevabı göster
    $stmt->bindParam(1, $name, PDO::PARAM_STR);

İleri seviye bölümündeki tüm dersler