rowCount() ile etkilenen satır
rowCount() ile UPDATE, DELETE ve INSERT'in etkilediği satır sayısını öğrenirsin.
rowCount() ne işe yarar?
rowCount() bir PDOStatement nesnesi üzerinde çağrılır ve son INSERT, UPDATE veya DELETE işleminin etkilediği satır sayısını döndürür.
Örneğin UPDATE users SET role = ? WHERE role = ? sorgusundan sonra $stmt->rowCount() kaç satırın değiştiğini söyler.
Sonuç, kullanıcıya geri bildirim vermek veya işlemi doğrulamak için kullanışlıdır.
Doğrulama deseni
Bir toplu güncelleme yaptığında rowCount() sonucunu yazdırmak işlemin beklendiği gibi çalıştığını doğrular.
Örneğin üç 'editor' kullanıcısını 'admin' yaptıysan ve rowCount() 3 döndürdüyse, üç satırın gerçekten değiştiğini bilirsin.
Sonuç 0 ise WHERE koşuluna uyan satır bulunamamıştır; bu bilgi eksik ID veya yazım hatasını yakalamada yardımcı olur.
Uygulama Toplu rol güncelle ve rowCount yazdır
Aşağıdaki iskelette prepare ve execute ile tüm 'editor' rolündeki kullanıcıları 'admin' yap. Sonra rowCount() ile etkilenen satır sayısını 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')");
$pdo->exec("INSERT INTO users (name, role) VALUES ('Ali', 'editor')");
$pdo->exec("INSERT INTO users (name, role) VALUES ('Deniz', 'editor')");
$stmt = $pdo->prepare("UPDATE users SET role = ? WHERE role = ?");
$stmt->execute(['admin', 'editor']);
echo $stmt->rowCount() . "\n";
Kendini test et
-
UPDATE sonrası $stmt->rowCount() ne döndürür?
- Toplam satır sayısını
- Etkilenen satır sayısını
- Son kaydın ID'sini
- Hata kodunu
Cevabı göster
Etkilenen satır sayısını — rowCount() UPDATE, DELETE veya INSERT sonrası etkilenen satır sayısını döndürür.
-
Etkilenen satır sayısını al
$count = $stmt->____();Cevabı göster
$count = $stmt->rowCount(); -
İşlemi sonuca eşle
- INSERT
- lastInsertId() ile yeni ID
- UPDATE
- rowCount() ile etkilenen satır
- DELETE
- rowCount() ile silinen satır
- SELECT
- fetchAll() ile satırlar