PHP ile PDO Kullanımı

  • 9 ay önce
PHP ile PDO Kullanımı

Veritabanı Bağlantısı

PDO da veritabanı bağlantısı;

<?php
try {
     $db = new PDO("mysql:host=localhost;dbname=test", "root", "123456");
} catch ( PDOException $e ){
     print $e->getMessage();
}
?>

PDO ile bağlanırken try catch yapısını kullanmak zorunda değildik ancak hatalı bilgileri girdiğimiz zaman veyahutta bir sorun olutuğu zaman bize hatanın asıl kaynağını göstermektedir.

Karakter Setini Ayarlama:

$db = new PDO("mysql:host=localhost;dbname=test;charset=utf8", "root", "123456");

veya

$db->query("SET CHARACTER SET utf8");

SELECT İşlemi (Toplu)

PDO da select işlemi;

$query = $db->query("SELECT * FROM TABLOADI", PDO::FETCH_ASSOC);
if ( $query->rowCount() ){
     foreach( $query as $row ){
          print $row['adi']."<br>";
     }
}

SELECT İşlemi (Tek)

$id = “1”;
$query = $db->query(“SELECT * FROM TABLOADI WHERE id = ‘{$id}'”)->fetch(PDO::FETCH_ASSOC);
if ( $query ){
print_r($query);
}

NOT: Teki bir veri çekeceksek eğer misal TABLOADI tablosunda bulunan id‘si 1 olan kullanıcın şifresini istiyorsak eğer;

$id = "1";
$query = $db->query("SELECT * FROM TABLOADI WHERE id = '{$id}'")->fetch(PDO::FETCH_ASSOC);
if ( $query ){
   echo $query["sifre"];
}

Şeklinde Kullanmamız yeterlidir.

INSERT İşlemi

$query = $db->prepare("INSERT INTO uyeler SET
isim = ?,
sifre = ?,
mail = ?");
$insert = $query->execute(array(
     "Ali Şahan Yalçın", "123456", "info@alisahanyalcin.com"
));
if ( $insert ){
    $last_id = $db->lastInsertId();
    print "insert işlemi başarılı!";
}

NOT: Ayrıca örnekte ? yerine key (anahtar) isimler belirtipte ona göre dizide değer gönderebilirdik.. Yani şu şekilde bir örnekte yapabilirdik;

$query = $db->prepare("INSERT INTO uyeler SET
isim = :kadi,
sifre = :sifre,
mail = :eposta");
$insert = $query->execute(array(
      "sifre" => "123456",
      "eposta" => "info@alisahanyalcin.com",
      "kadi" => "Ali Şahan Yalçın",
));
if ( $insert ){
    $last_id = $db->lastInsertId();
    print "insert işlemi başarılı!";
}

Peki bunun ne farkı var?
diye soracak olursanız bu şekilde execute metodunda belirttiğimiz dizideki sıranın bir önemi kalmaz. İstediğiniz key değerini istediğiniz sırada yazabilirsiniz.

UPDATE İşlemi

PDO‘a update işlemi;

$query = $db->prepare("UPDATE uyeler SET
isim = :yeni_isim
WHERE isim = :eski_isim");
$update = $query->execute(array(
     "yeni_isim" => "ALi Şahan Yalçın",
     "eski_isim" => "Ali Şahan"
));
if ( $update ){
     print "güncelleme başarılı!";
}

DELETE İşlemi (Toplu)

$delete = $db->exec("DELETE FROM uyeler");
print 'Toplam '.$delete.' üye silindi!';

DELETE İşlemi (Tek)

$query = $db->prepare("DELETE FROM uyeler WHERE id = :id");
$delete = $query->execute(array(
   'id' => $_GET['id']
));

Veritabanı Bağlantısını Sonlandırma

PDO da bağlantı sonlandırma işlemi;

$db = null;


Yorumlar

Yorum Yap