PHP PDO Kullanımı

Bu yazımda sizlere PDO nedir ve PDO nasıl kullanılır insert,update,delete,select işlemleri nasıl yapılır bunlardan bahsedeceğim. PDO açılımı PHP Data Objects türkçe karşılıgı PHP Veri Objeleri eskiden projelerimizde MYSQL kullanırdık artık PHP MYSQL desteğini çekti çünkü PDO daha avantajlı daha güvenilir ve en önemlisi ise OOP mantığında ve bir çok veritabanı sürücüsü destekiyor.

PDO kullanmamızın avantajları

  • SQL Injection Açıkları
  • XSS Açıkları

PDO SQL Injection,Xss gibi açıkları otomatik örtbas ediyor ve bize büyük kolaylık sağlıyor MYSQL kullanırken bir form işleminde kullanıcıdan input dan veri alırken post’u html taglarından temizlemek gerekirdi ayrı ayrı filtreleme yapmak gerekirdi örnegin htmlspecialchars,trim gibi artık bunları yapmamıza gerek yok PDO bizim yerimize sql cümleciğinin içerisine gelen degişkeni koymak yerine ‘?’ koyarak verilerimizin korunmasını sağlıyoruz detaylı kullanımı aşağıda görebilirsiniz.

PDO Veritabanı Bağlantısı

<?php
try {
     $conn = new PDO("mysql:host=localhost;dbname=users;charset=utf8", "root", "password");
} catch ( PDOException $e ){
     print $e->getMessage();
}
?>

Try Catch yapısını kullanarak PDO ile veritabanına bağlandık ve Dilimizi UTF-8 olarak ayarladık siz isterseniz try catch yapısını kullanmayabilirsiniz ben örneği bu şekilde gösterdim.

PDO INSERT Kullanımı

<?php

$query = $conn->prepare("INSERT INTO user SET
user_name= ?,
user_password = ?,
user_mail = ?");
$insert = $query->execute(array(
     "İskender Uzuner",55555, "[email protected]"
));
if ( $insert ){
    print "veri ekleme işlemi başarılı!";
}

?>

Verilerimizi prepare içerisinde gelen degişkenleri yazmak yerine ? koyarak execute içerisine verilerimiz yazıyoruz bu sayede güvenlik açıklarından korunuyoruz

PDO DELETE Kullanımı

<?php 

$query= $conn->prepare("DELETE FROM user WHERE user_name = :user_name");
$delete = $query->execute(array(
   'user_name' => $_GET['user_name']
));

?>

Tek bir veriyi PDO ile silmiş olduk burada dikkat ettiyseniz sql cümleciğinin içerisinde ? yerine :user_name kullandık bu sizin tercihiniz ikiside aynı işi görüyor.

PDO UPDATE Kullanımı

<?php 

$query= "UPDATE tablo SET user_name=?,user_password=? WHERE id=?";
$query = $conn->prepare($query);
$sonuc = $query->execute(array($user_name,$user_password,$id));

PDO ile user tablosundaki user_name,user_password alanlarını id’sine göre güncelleme işlemi yaptık.

PDO SELECT Kullanımı

<?php 

$query = $conn->query("SELECT * FROM user where id=1", PDO::FETCH_ASSOC);
   foreach( $query as $row ){
      echo $row['user_name']."<br />";
   }

Yukarıdaki sorgu kesinlikle kullanımını tavsiye etmem çünkü bu şekilde yazılan kod xss,sql injection açıkları yaratır çünkü koşul belirttik ve koşulun degerini direk 1 yaptık hacker abilerimiz bu sorguya rahatlıkla erişebilir o yüzden gelin biz aşağıdaki koda bakalım.

<?php 

$query = "SELECT * FROM user WHERE id= :id";
$query = $conn->prepare($query);
$query->bindParam(':id', $id, PDO::PARAM_INT);
$sonuc = $query->execute();

?>

Burada görmüş olduğumuz gibi id degerini direk 1 yazmak yerine :id yazdık bu sayede verimize erişim engellenmiş oldu ayrına PARAM_INT diyerek gelen verimizin bir INT değer olduğunu söyledik.

bindParam() ve bindValue() Nedir ?

bindParam sadece veri ismi sonra verinin degişken ismi şekilde yazılmalıdır.

bindParam(“:title”, $title)

bindValue ise hem degişkenin verisi hemde degişken ismini yazdırmaktadır.

bindValue(“:title”, $title) veya bindValue(“:title”, “title verisi”)

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

%d blogcu bunu beğendi: