Php Data Objects kelimelerinin kısaltması olan PDO’yu Türkçe’ye Php Veri Nesneleri olarak çevirebiliriz. Veritabanına erişmek için hafif, tutarlı ve güvenli bir arayüz sunması nedeniyle PDO yoğun olarak tercih edilmekte. Özellikle Sql Injection riskine karşı en güvenli tercihlerden birisi. Elbette sunulan kullanıma uygun olarak, “prepared query” tercih edilirse. Popüler veritabanları olan Mysql, MariaDb ve PostgreSql gibi bir çok veritabanını desteklemekte. Sql dilini kullanarak sorgularımızı yapabiliyoruz.
Öncelikle PDO’nun aktif edilmesi gerekiyor. php.ini dosyasından, “;extension=php_pdo_mysql.dll
” satırının başındaki noktalı virgül kaldırılımalı ve apache yeniden başlatılmalı. Sonrasında PDO’yu kullanılabilir.
Veritabanına Bağlanmak
Konu veritabanı olduğunda güvenliği elden bırakmamakta fayda var. Her ihtimale karşı, olası bir sql injection riskini bertaraf etmek için veritabanını oluştururken, kullanıcı oluştururken gerekli olmayan yetkileri vermemek önemli. SELECT, INSERT, UPDATE ve DELETE fonksiyonları dışında yetki verirken dikkatli olmakta fayda var. Pdo ile veritabanına aşağıdaki gibi bağlanıyoruz. Bu kısmı dbConnect.php gibi bir dosyaya koyabilirsiniz.
<?php $sunucu = 'database'; $dbAdi= 'db_adi'; $dbKullanici = 'db_kullanici'; $dbSifre = 'db_sifre'; $dsn = "mysql:host=$sunucu;dbname=$dbAdi;charset=UTF8"; try { $pdo = new PDO($dsn, $dbKullanici, $dbSifre); if ($pdo) { echo "$dbAdi veritabanina baglandiniz"; } } catch (PDOException $e) { echo $e->getMessage(); }
Tablodan Verileri Çekmek: SELECT
Tablodan veri çekmek için kullandığımız SELECT fonksiyonuyla bir örnek yapalım. WHERE koşulunda kullanacağımız verinin değişkenden gelmesi önemli.
<?php include 'pdo.php'; $dogumYili = 1990; $sql = 'SELECT * FROM ornek WHERE dogum_yili < :dogum_yili'; $sorgu = $pdo->prepare($sql); $sorgu->bindParam(':dogum_yili', $dogumYili, PDO::PARAM_INT); $sorgu->execute(); $veriler = $sorgu->fetch(PDO::FETCH_ASSOC); var_dump($veriler);
Tabloya Veri Eklemek: INSERT
Tabloya veri eklemek için INSERT fonksiyonunu kullanacağız. Sql sorgusunu yardığımı satıra, değişen ekleyerek veri girişi asla yapmayın. Bu yol veri güvenliği riskine yol açabilir!
<?php include 'pdo.php'; $isim = 'Sakin'; $soyisim = 'Adam'; $yil = 1987; $sql = 'INSERT INTO ornek(isim, soyisim, dogum_yili) VALUES(:isim, :soyisim, :yil)'; $statement = $pdo->prepare($sql); $statement->execute([ ':isim' => $isim, ':soyisim' => $soyisim, ':yil' => $yil, ]); $insertId = $pdo->lastInsertId(); var_dump($insertId);
Tablodan Veri Güncelleme: UPDATE
<?php include 'pdo.php'; $id = 2; $isim = 'Sakin Edit'; $sql = 'UPDATE ornek SET name = :isim WHERE id = :id'; $update = $pdo->prepare($sql); $update->bindParam(':id', $id, PDO::PARAM_INT); $update->bindParam(':isim', $isim); if ($update->execute()) { echo 'Basariyla guncellendi!'; }
Tablodan Veri Silmek: DELETE
<?php include 'pdo.php'; $id = 2; $sql = 'DELETE FROM ornek WHERE id = :id'; $delete = $pdo->prepare($sql); $delete->bindParam(':id', $id, PDO::PARAM_INT); if ($delete->execute()) { echo 'Basariyla silindi'; }
Toparlayalım 🙂
Temel 4 sorgu olan SELECT, INSERT, UPDATE ve DELETE üzerinden Php Pdo’yu anlatmaya çalıştım. Atladığım kısımlar varsa ya da başka sormak istedikleriniz olursa yorum bırakabilirsiniz.