CodeBlanks Logo Icon CodeBlanks

PDO ile bağlantı kurma

PHP kursu · İleri seviye · Ders 2/92

PDO kurucusuyla veritabanına DSN ile bağlanmayı öğrenirsin.

PDO kurucusu

PDO'ya bağlanmak için new PDO($dsn, $user, $password) yazılır. DSN bağlantı dizesidir; sqlite::memory: gibi sürücü adıyla başlar.

SQLite için kullanıcı ve parola gerekmez; bu durumda DSN tek başına yeter. MySQL için ise mysql:host=localhost;dbname=test biçiminde yazılır ve $user, $password argümanları eklenir.

Bağlantı başarısız olursa PHP bir PDOException fırlatır.

PDOException ve hata modu

Bağlantı sırasında hata olursa (örneğin DSN yanlışsa) PDO bir PDOException fırlatır. Yakalanmazsa program durur.

Güvenli bağlantı kodunu try/catch içine alın; catch (PDOException $e) ile hatayı yakala. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) ile hata modunu ayarla; böylece sorgu hataları da istisna fırlatır.

Bağlantıyı kapatmak için $pdo = null yaz; PHP betiği bitince de otomatik kapanır.

Uygulama try/catch ile güvenli bağlantı

Bellek içi SQLite'a new PDO('sqlite::memory:') ile bağlan. Bağlantıyı try/catch içine al; catch (PDOException $e) ile hatayı yakala. Başarılı olursa 'OK' yazdır; hata olursa $e->getMessage() çağrısıyla mesajı yazdır.

Örnek çözümü göster
:memory:'); yaz ve echo 'OK' . "\n"; ile yazdır. catch (PDOException $e) ile yakala ve echo $e->getMessage() . "\n"; ile mesajı yazdır.
Örnek çözüm:
<?php
// try/catch ile güvenli bağlantı kur
try {
    $pdo = new PDO('sqlite::memory:');
    echo 'OK' . "\n";
} catch (PDOException $e) {
    echo $e->getMessage() . "\n";
}

Kendini test et

  1. PDO kurucu çağrısını tamamla

    <?php
    $dsn = 'sqlite::memory:';
    $pdo = ____($dsn);
    echo get_class($pdo) . "\n";
    ?>
    Cevabı göster
    <?php
    $dsn = 'sqlite::memory:';
    $pdo = new PDO($dsn);
    echo get_class($pdo) . "\n";
    ?>
  2. Bağlantı sırasında PDOException fırlarsa ne yapmalı?

    • try/catch ile yakala
    • Programın çökmesini bekle
    • die() ile hemen çık
    • echo ile uyarı yaz, devam et
    Cevabı göster

    try/catch ile yakala — Doğru. try/catch ile PDOException yakalanır; catch bloğunda hata yönetilir.

  3. Bağlantı kavramlarını eşleştir

    new PDO($dsn)
    Bağlantı kurar
    PDOException
    Bağlantı hatası
    $dsn
    Bağlantı dizesi
    try/catch
    Hata yakalar

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