CodeBlanks Logo Icon CodeBlanks

Özet - PDO temelleri

PHP kursu · İleri seviye · Ders 7/92

bağlantı, query, fetch ve fetchAll'la kullanıcı listesi uygulaması yazarsın.

Özet - PDO temelleri

Bu grupta PDO'nun temellerini gördük: new PDO($dsn) ile bağlantı, PDO::ERRMODE_EXCEPTION ile hata yönetimi, query() ile SQL çalıştırma ve fetch()/fetchAll() ile satır okuma.

Bu derste küçük bir kullanıcı listesi uygulaması yazacağız. Bağlantıyı kur, tabloyu oluştur, veri ekle ve fetchAll ile listele.

İlk görevde bağlantı ve tabloyu kur, ikinci görevde veriyi çek ve yazdır.

Kullanıcı listesi uygulaması

Uygulamamız iki parça: önce tabloyu kur ve veri ekle, sonra fetchAll(PDO::FETCH_ASSOC) ile satırları çek ve yazdır.

FETCH_ASSOC sütun adlarıyla ilişkisel dizi verir; foreach ile her satırı işlersin. Bu grupta en sık kullanacağımız mod budur.

Sonraki derslerde prepare() ile güvenli sorgu yazmayı öğreneceğiz; şimdilik query() ile sabit SQL kullanıyoruz.

Uygulama Bağlantı ve tabloyu kur

Bellek içi SQLite'a new PDO('sqlite::memory:') ile bağlan. setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) ile hata modunu ayarla. users (id INTEGER PRIMARY KEY, name TEXT, role TEXT) tablosunu oluştur ve üç kullanıcı ekle: Ayşe/admin, Ali/editor, Deniz/admin. Son olarak 'OK' yazdır.

Örnek çözümü göster
:ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); ile hata modunu ayarla. $pdo->exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, role TEXT)"); yaz. Üç INSERT ekle: Ayşe/admin, Ali/editor, Deniz/admin. Son olarak echo 'OK' . "\n"; yaz.
Örnek çözüm:
<?php
// Bağlantı, hata modu ve tablo kurulumu
$pdo = new PDO('sqlite::memory:');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, role TEXT)");
$pdo->exec("INSERT INTO users (name, role) VALUES ('Ayşe', 'admin')");
$pdo->exec("INSERT INTO users (name, role) VALUES ('Ali', 'editor')");
$pdo->exec("INSERT INTO users (name, role) VALUES ('Deniz', 'admin')");
echo 'OK' . "\n";

Uygulama fetchAll ile kullanıcı listesini yazdır

Bu görev önceki görevin çözümünü temel alır. Bağlantı, hata modu ve tablo kurulumunu yaptıktan sonra üç kullanıcı ekle. Sonra query("SELECT name, role FROM users ORDER BY id") çalıştır; fetchAll(PDO::FETCH_ASSOC) ile tüm satırları al ve foreach ile her satırı name - role biçiminde yazdır.

Örnek çözümü göster
:FETCH_ASSOC); ile tüm satırları al. foreach ($rows as $row) { echo $row['name'] . ' - ' . $row['role'] . "\n"; } ile yazdır.
Örnek çözüm:
<?php
// Bağlantı, hata modu ve tablo kurulumu
$pdo = new PDO('sqlite::memory:');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, role TEXT)");
$pdo->exec("INSERT INTO users (name, role) VALUES ('Ayşe', 'admin')");
$pdo->exec("INSERT INTO users (name, role) VALUES ('Ali', 'editor')");
$pdo->exec("INSERT INTO users (name, role) VALUES ('Deniz', 'admin')");
$stmt = $pdo->query("SELECT name, role FROM users ORDER BY id");
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
    echo $row['name'] . ' - ' . $row['role'] . "\n";
}

Kendini test et

  1. PDO'da bağlantı nasıl kapatılır?

    • $pdo = null
    • $pdo->close()
    • $pdo->disconnect()
    • PDO::close($pdo)
    Cevabı göster

    $pdo = null — Doğru. $pdo = null bağlantıyı kapatır; betik bitince de otomatik kapanır.

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