Php Pdo Kullanımı

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.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Time limit is exhausted. Please reload CAPTCHA.