UPDATE ile kayıt güncelleme
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
-
UPDATE parçalarını eşle
- UPDATE
- Tablo adı
- SET
- Yeni değerler
- WHERE
- Hangi satırlar
- execute()
- Sorguyu çalıştırır
-
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.
-
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 = ?");