CodeBlanks Logo Icon CodeBlanks

UPDATE ile kayıt güncelleme

PHP kursu · İleri seviye · Ders 17/92

PDO ve prepared statement ile mevcut kaydı güncellemeyi öğrenirsin.

UPDATE ile kayıt güncelleme

Mevcut kaydı güncellemek için UPDATE komutunu prepared statement ile çalıştırırsın. SET yan tümcesi hangi sütunların değişeceğini, WHERE hangi satırların etkileneceğini belirtir.

Örneğin UPDATE users SET role = ? WHERE name = ? sorgusu belirli isimdeki kullanıcının rolünü değiştirir; değerler execute() ile geçirilir.

WHERE olmadan UPDATE tablodaki tüm satırları günceller; bu yüzden koşulu unutmak tehlikelidir.

Güncelleme sonrası doğrulama

Güncellemenin etkili olup olmadığını kontrol etmek için aynı kaydı SELECT ile çekip yeni değeri yazdırırsın. Böylece değişikliğin gerçekten uygulandığını görürsün.

PDO fetch(PDO::FETCH_ASSOC) tek satırı ilişkisel dizi olarak döndürür; kayıt yoksa false verir.

Bu desen güncelleme öncesi ve sonrası durumu karşılaştırmak için de kullanışlıdır.

Uygulama Rolü güncelle ve doğrula

Aşağıdaki iskelette prepare ve execute ile 'Ayşe' kullanıcısının rolünü 'admin' yap. Sonra SELECT ile rolünü çek ve yazdır.

Örnek çözümü göster
<?php
$pdo = new PDO('sqlite::memory:');
$pdo->exec("CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, role TEXT)");
$pdo->exec("INSERT INTO users (name, role) VALUES ('Ayşe', 'editor')");
$stmt = $pdo->prepare("UPDATE users SET role = ? WHERE name = ?");
$stmt->execute(['admin', 'Ayşe']);
$stmt = $pdo->prepare("SELECT role FROM users WHERE name = ? ORDER BY id");
$stmt->execute(['Ayşe']);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
echo $row['role'] . "\n";

Kendini test et

  1. UPDATE parçalarını eşle

    UPDATE
    Tablo adı
    SET
    Yeni değerler
    WHERE
    Hangi satırlar
    execute()
    Sorguyu çalıştırır
  2. UPDATE sorgusunda WHERE yoksa ne olur?

    • İlk satır güncellenir
    • Sorgu hata verir
    • Tüm satırlar güncellenir
    • Kayıt değişmez
    Cevabı göster

    Tüm satırlar güncellenir — WHERE olmadan UPDATE tablodaki tüm satırları günceller.

  3. UPDATE yan tümcesini tamamla

    $stmt = $pdo->prepare("UPDATE users SET role = ? ____ name = ?");
    Cevabı göster
    $stmt = $pdo->prepare("UPDATE users SET role = ? WHERE name = ?");

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