PHP Veritabanı Bağlantısı
Bildiğiniz gibi hemen hemen tüm programlarda, projelerde veri tabanlarıyla birlikte çalışılıyor. Ancak veritabanına erişim kısmı değişkenlik gösterebilir. Biz bugün PHP de nasıl bağlantı kuracağız, veritabanına ekleme (insert)-çıkarma(delete) veya güncelleme (update) gibi temel işlemleri nasıl yapacağız buna bakalım. Öncelikle yaygın olan veritabanlarından bahsedelim.
Oracle , Kaliforniya kökenli bir yazılım şirketidir. 1977 yılında kurulmuştur ve bugüne kadar birçok başarıya imza atmıştır. Java programlama dilinin günümüzdeki halinin mimarıdır.
Oracle'ı İlişkisel Veritabanı Yönetim Sistemleri olarak tanımlayabiliriz. Bu genel anlamda RDBMS olarak anılmaktadır. Açılımı Relational Database Management System'dir.
PostgreSQL, güçlü özellikler ve avantajlara sahip, açık kaynaklı ve tamamen ücretsiz nesne ilişkisel veri tabanı sistemidir.
<?php
try {
$db = new PDO("mysql:host=localhost;dbname=veritabani_adi", "kullanici_adi", "sifre");
} catch ( PDOException $e ){
print $e->getMessage();
}
if (!$db ) die("Bağlantı Sağlanamadı...");
?>
Burada try-catch yapısı kullanılıyor. try içinde hesaplanmak istenen ifade yer alır. catch yazıldığında bir hata türü tespit edilince verilmesi gereken mesaj yazılıyor. <?php
require_once("veri_ekle.php");
?>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1>Veritabanı PDO Kayıt İşlemleri</h1>
<hr>
<form action="/ekleme.php" method="POST">
İsim <input type="text" name="ad" placeholder="Adınızı Giriniz" required>
Soyisim <input type="text" name="soyad" placeholder="Soyadınızı Giriniz" required>
Mail <input type="email" name="email" placeholder="Mail Giriniz" required>
Yas <input type="text" name="yasi" required>
<button type="submit" >Formu Gönder</button>
</form>
</body>
</html>
Input Nedir?<?php
require_once("baglanti.php");
if($_POST[ad] AND $_POST[soyad] AND $_POST[email] AND $_POST[yasi] ){
$kaydet = $pdo->prepare("INSERT INTO kisiler SET
ad = ?,
soyad = ?,
mail = ?,
yas = ?
");
$insert = $kaydet->execute(array(
$_POST[ad], $_POST[soyad], $_POST[mail], $_POST[yas]
));
if($insert) return 1; else return 0;
}
?>
Biraz önce bahsettiğimiz require_once işlemini burada da kullandık. Veritabanına bağlantı yapmak için gereken kodları baglanti.php içerisinde yazmıştık. Bunu burada çağırdık ve veritabanı bağlantısı kurduk. Artık ekleme işlemlerine başlayabiliriz.Post işlemi veri almayı sağlar. Yani kullanıcı adını soyadını girdiğinde ne yazdığının görülmesini sağlar. Post ile veri gönderildiğinde adres satırında hiçbir şey görülmez. Ancak get ile gönderildiğinde adres satırında yazar. Yani Post gizlidir ancak get değildir.
if($_POST[ad] AND $_POST[soyad] AND $_POST[email] AND $_POST[yasi] )
Burada $_POST'ların içine yazılanlar isim, soy isim, mail ve yaş ile tanımladığımız inputlara verdiğimiz isimlerdir. Diyoruz ki;
ad gelmişse, soyad gelmişse, email gelmişse ve yasi gelmişse aşağıdaki işlemleri yap. Kontrol sağlıyoruz. $kaydet = $pdo->prepare("INSERT INTO kisiler SET
$insert = $kaydet->execute(array(
$_POST[ad], $_POST[soyad], $_POST[mail], $_POST[yas]
));
if($insert) return 1; else return 0;
$query = $pdo->query("SELECT * FROM kisiler", PDO::FETCH_ASSOC);
if ( $query->rowCount() ){
foreach( $query as $row ){
print $row['ad']."<br>";
}
}
Select anahtar kelimesi sql de verileri çekmemizi sağlar. *from dediğimizde kisiler tablosundaki tüm verileri getirir. Ancak burada sadece ad sütununu çekmek istediğimiz için sadece onu yazdırdık.function vericek($a,$b){
global $pdo;
$b = $_POST['$b'];
$array = $pdo->query("SELECT * FROM $a WHERE $b =$b")-> fetch(PDO::FETCH_ASSOC);
return $array;
}
function anahtar kelimesini kullanarak parametreli ve değer döndüren bir fonksiyon oluşturduk. İncelersek;function guncelle($tablo_adi,$secilecek_sutun,$secilen_sutun_deger,$id,$degisecek_deger){
global $pdo;
$query = $pdo->prepare("UPDATE $tablo_adi SET $id = :yeni WHERE $secilecek_sutun = :eski");
$update = $query->execute(array(
"yeni" => "$degisecek_deger",
"eski" => "$secilen_sutun"
));
if($update) return 1; else return 0;
}
Tablo adı-Seçilecek Sütun- Seçilen Sütun Değeri- Id'si - Değişecek değer parametreleriyle bir fonksiyon oluşturduk. Veritabanı bağlantısını kurduk."UPDATE $tablo_adi SET $id = :yeni WHERE $secilecek_sutun = :eski"
$delete = $pdo->exec ("DELETE FROM kisiler");
Silme işlemi diğerlerine göre daha kısa bir işlemdir. Veritabanına bağlandıktan sonra eğer bir tabloyu tamamen silmek istiyorsak bu kodu kullanıyoruz. Burada kisiler tablosunu tamamen silme işlemini gerçekleştirdik. "kisiler" tablo adıdır.$query = $pdo->prepare("DELETE From kisiler WHERE ad = :id");
$delete = $query->execute(array( 'id' => $_GET['id'] )
);
Bu şekilde de tek bir satırda silme işlemi yapılıyor. Hangi kullanıcı seçilmişse onun id'sini bulup o kullanıcıyı veritabanından siliyor. Burada "kisiler" tablosunda ad'a göre id bulunur. Sonra o satır silinir.