5 Mayıs 2012 Cumartesi

PHP & PostgreSQL Database Bağlantısı Oluşturma ve Kurulum


PostgreSql, PostgreSQL Inc. şirketi tarafından desteklenen, açık kaynak kod uygulamalı bir veri tabanı sistemidir. Kullanıcı tanımlaması yapılabilen, SQL ile her türlü sorgulama desteği olan postgresql birçok yazılım dili ile uyum içinde çalışabilmektedir. C, C++, JAVA, PHP, PERL, .NET, PYHTON programlama dilleri bunların önemlileri olarak sıralanabilmektedir.

PostgreSQL, iyi performans veren, geniş özelliklere sahip ve güvenli bir veritabanı sistemidir. Ücretsiz ve açık kaynak olması tercih edilmesinin en büyük nedenleri olarak gösterilebilmektedir. Tüm Unix tabanlı işletim sistemlerinde çalışabilmektedir. Ayrıca Lunix, FreeBSD ve Windows işletim sistemlerinde de çalışmaktadır.

Bir yazılım uzmanı kendine, neden postgreSQL kullanmalıyım? diye bir soru sorarsa bunun cevabı, açık kaynak bir uygulama olması, güvenli, geniş bir geliştirici yazılımcı grubunun olması, birçok platformda ve değişik arayüzlerde çalışabilir olması ve diğer veritabanlarından daha geniş özelliklere sahip olması (MYSQL, SQLite, Access) gibi maddeler ile sıralanabilir. Ayrıca SQL işlemleri, phppgadmin üzerinden, SQL bilgisine gerek olmadan da yapılabilmektedir. Bu da büyük bir zaman avantajı sağlamaktadır.

PostgreSQL içerisindeki bir veritabanı üzerinde bulunan tablo, maksimum olarak 64 TB veri depolama kapasitesine sahiptir ki bu da bir tablo için oldukça büyük bir ölçüdür. Bu özellik neredeyse sınırsız satır (row) ölçüsü sunmaktadır. Durum böyle olunca sınırsız bir veritabanı depolama kapasitesinden bahsetmek pek de yanlış olmayacaktır.

POSTGRESQL PhpPgAdmin Kullanımı

Tanınmış birçok kurum ve kuruluşlar tarafından kullanılan bu sistemi kurabilmek için postgresql.org sitesinin download bölümünden gerekli programı, sahip olduğunuz işletim sistemine göre seçip bilgisayarınıza indirebilmektesiniz. İndirilen program çalıştırılıp kurulma işlemi gerçekleştirildikten sonra, herhangi bir internet tarayıcısına localhost:8080/phppgadmin yazıp, bu veritabanına bağlantının ilk adımını atmış olacaksınız. 
phppgadmin, sisteme ilk defa giriş ekran görüntüsü
Yukarıda görülen ekran görüntüsü, phppgadmin veritabanı sistemine, ilk girişi göstermektedir. Gerekli tanımlama işlemini gerçekleştirebilmek için kullanıcı adı postgres olarak, şifre bilgisi ise program kurulumu sırasında girilen şifre olarak belirlendikten sonra giriş yapılacak ve aşağıdaki görüntü elde edilecektir.
phppgadmin giriş sayfası
Yukarıdaki ekran görüntüsü elde edildikten sonra artık phppgadmin veritabanı kullanılmaya hazır bir sistem olarak beklemektedir. PostgreSQL’in en önemli özelliklerinden biri, phppgadmin üzerinden SQL sorguları yapılabildiği gibi, postgreSQL arayüzü üzerinden de işlem yapılabilmesidir. Zira tüm yetkiler düzenlenip tüm veritabanına bağlanılabilmektedir.
phppgadmin üzerinden yeni bir veritabanı yaratmak
Yukarıda görülen ekran görüntüsü phppgadmin üzerinden veritabanı oluşturma yolunu göstermektedir. Sol tarafta bulunan PostgreSQL ana veritabanına tıklandığında yukarıdaki görüntü elde edilecek ve Veritabanı yarat ibaresi ile de yeni bir veritabanı yaratılabilmektedir.

Biz phpservisi adında bir veritabanı oluşturalım. Fakat bunu phppgadmin üzerinden değil de postgreSQL arayüzü üzerinden oluşturalım. Zira SQL kullanarak uygulama yapmak her zaman daha büyük bir tecrübe kazanmaya ortam yaratacaktır.
postgreSQL üzerinden tablolara erişim
Yukarıda görüntülenmekte olan ekran çıktısı, postgreSQL arayüzüdür. Bu program sayesinde phppgadmin içerisindeki her türlü işlem yapılabilmekte ve veriler görüntülenebilmektedir.

Veritabanı üzerinde çalışmak için artık SQL kullanma zamanı geldi. Programın yukarısında görülen SQL ifadesi tıklanarak yeni bir tablo oluşturalım.
postgreSQL arayüzü üzerinden yeni bir tablo oluşturmak
Yukarıda görülen SQL kodları ve sonuç raporu görüntüsüdür. phpservisi adında, id ve konu sütunlarına sahip bir tablo oluşturulmuştur. phppgadmin sayfasına giriş yapılıp kontrol edildiğinde, veritabanı içerisinde phpservisi adında bir tablo oluşturulduğu görülecektir.

Bu oluşturulan tablo içerisine veri ekleme işlemi, bilindiği gibi SQL’in INSERT komutu ile yapılacaktır.
phpservisi tablosuna veri ekleme işlemi
Yukarıdaki işlem, phpservisi tablosuna PHP, HTML, AJAX, SQL sözcüklerini eklemeyi sağlamaktadır. Apache sunucusu çalıştırılıp phppgadmin incelendiğinde, phpservisi tablosu içerisine eklenen verilerin listelendiği  görülecektir.
phppgadmin üzerinden inceleme
Eklenen verileri postgreSQL arayüzü ile SQL’in SELECT komutu sayesinde listeleyelim:
postgreSQL arayüzü ile SELECT kullanımı
Yukarıda görüldüğü gibi, veriler SELECT vasıtasıyla listelenmektedir. SQL sorgulama işlemleri ile yapılabilen her olay postgreSQL arayüzü üzerinden uygulanabilmektedir. Bunun zaman kaybını önlemesi ve pratik olması oldukça önemli bir kolaylıktır.

Son olarak veri güncelleme ve silme işlemleri üzerinde duralım. Klasik UPDATE ve DELETE SQL komutları ile bu işlemleri gerçekleştirmek mümkün olacaktır.
postgreSQL üzerinden UPDATE işlemi
postgreSQL üzerinde DELETE işlemi

PHP ile PostgreSQL

Buraya kadar postgreSQL’in ne olduğunu, phppgadmin içeriğini ve ara yüz üzerinden yönetilmesini gördük. Fakat bütün bunları öğrendikten sonra bu performansı yüksek veritabanının PHP ile ilişkilendirmesinin nasıl olacağını bilmemek olmaz. Bu bölümde PHP’nin postgreSQL eklentisine ait fonksiyonları ve bunlar ile ilgili örnekleri inceleyeceğiz.


PHP ile postgreSQL Bağlantısı : pg_connect()

PHP programlama dili, postgreSQL veritabanı ile ilişkilendirilebilmesi için bir kütüphane barındırmaktadır. Bu kütüphanede ise çeşitli fonksiyonlar bulunmaktadır. pg_connect() fonksiyonu bunlardan biridir. PHP ile postgreSQL arasındaki bağlantıyı sağlamaktadır.

pg_connect() Yapısı


pg_connect(“host=host dbname=veritabanı port=port user=kullanıcıadı password=şifre”)



Bu fonksiyon yukarıdaki yapı çerçevesinde kullanılır. Parametrelerin her birini kullanma zorunluluğu yoktur. Gerekli bilgiler ışığında sadece veritabanı adı, ya da buna ek olarak kullanıcı adı, şifre vs gibi bilgiler de kullanılabilmektedir.
           
Bağlanılmak istenen server ve veritabanı bilgileri girilen pg_connect() Yapısı


pg_connect(“host=host dbname=veritabanı”)



Bağlanılmak istenen veritabanı bilgisi girilen pg_connect() Yapısı


pg_connect(“dbname=veritabanı”)



localhost üzerinden phpservisi isimli veritabanına 5432 port numarası ile kullanıcı adı php ve şifresi 12345 olan php bağlantısının pg_connect() Yapısı


pg_connect(“host=localhost dbname=phpservisi port=5432 user=php password=12345”)


PostgreSQL Bağlantısını Sonlandırmak : pg_close()

Daha önce yapılan PHP – PostgreSQL bağlantısını sonlandırmak için pg_close() fonksiyonu kullanılmaktadır.

pg_close() Yapısı


pg_close($baglanti)



Mevcut bir bağlantıyı sonlandırmak


<?php
$baglan = pg_connect("host=localhost port=5432 dbname=phpservisi");
echo "Bağlantı Mevcut";
if (pg_close($baglan) == 1) {
echo "Bağlantı Başarıyla Sonlandırıldı!";
} else {
echo "Bağlantı Sonlandırılamadı!";
}
?>



Diğer Fonksiyonlar

SQLite veritabanında gördüğümüz fonksiyonların MYSQL fonksiyonları ile ne derece benzerlik gösterdiğini hatırlayabiliriz. PostgreSQL’de de durum bundan farksızdır. İsim olarak benzerlik gösteren fonksiyonlar, işlev olarak da benzerlik göstermektedirler.


PostgreSQL ve MYSQL Fonksiyonlarının benzerlikleri

Mysql Fonksiyonları


PostgreSQL Fonksiyonları

mysql_connect()
pg_connect()
mysql_query()
pg_query()
mysql_result()
pg_result()
mysql_fetch_row()
pg_fetch_row()
mysql_fetch_array()
pg_fetch_array()


pg_query()

Bu fonksiyon, mysql_query() ya da sqlite_query() fonksiyonlarında olduğu gibi, SQL’den gelen sorguyu PHP ile ilişkilendirmektedir.

pg_query() Yapısı


$sonuc = pg_query($baglanti, $sql)



$sql ile döndürülmek istenen sorgu iletilemez ise hata mesajı gösterilecektir. Bu durumda pg_ErrorMessage() fonksiyonu işlem görebilmektedir.


Uygulama

Bir veritabanı ile yapılacak işlemler SQL sorgulama dilinin gücüyle orantılıdır. Bir veritabanı yaratılıp, içerisinde tablolar oluşturmak ve bu tabloların içerisine veri eklemek, silmek, güncellemek ya da görüntülemek gibi işlemleri gerçekleştirmek suretiyle, sonsuz işlem yapma imkanı vardır.

Bu uygulamada PHP ile PostreSQL arasındaki bağlantıyı sağladıktan sonra SQL’in gücü ile işlemler yapacağız.
Verilerin depolanacağı tabloyu veritabanında oluşturacak SQL kodunu yazalım.

veriler tablosu



CREATE TABLE veriler (
id integer primary key,
veri text not null
);


Oluşturulan veriler tablosuna veri eklemek için veriler.sql dosyasını içeri aktarmak gerekecektir. INSERT deyimi ile veri ekleme işlemi hazırlanmıştır.

veriler.sql



INSERT INTO veriler(id,veri) values('1','PHP');
INSERT INTO veriler(id,veri) values('2','ASP');
INSERT INTO veriler(id,veri) values('3','AJAX');
INSERT INTO veriler(id,veri) values('4','HTML');
INSERT INTO veriler(id,veri) values('5','SQL');


veriler tablosu


Uygulama : PostgreSQL veritabanına bağlantı kontrolu – kontrol.php


<?php
$baglanti = pg_connect("dbname=veritabanı user=postgres");
if($baglanti == 1 ) {
            echo "Bağlantı Başarıyla Yapıldı!";
}
else {
            echo "Bağlantı Sağlanamadı!";
}
?>



Uygulama : PostgreSQL veritabanından veri çekmek – veriler.php


<?php
$baglanti = pg_connect("dbname=veriler user=postgres");
$veriler = pg_query($baglanti,"SELECT * FROM veriler");
while(listele = pg_fetch_array($veriler)) {
            $id=$listele["id"];
            $veri=$listele["veri"];
            echo "id -> $veri";
}
?>



Görüldüğü gibi, MYSQL fonksiyonları ile yapılan işlemin benzer bir görüntüsü postgreSQL’de de uygulanabilmektedir. Birbirine çok benzeyen fonksiyon isimleri de, mysql bilgisi olan ve php ile etkileşim sağlamış deneyimli kullanıcılar için büyük kolaylık sağlamaktadır.

Bir sonraki yazıda görüşmek üzere!

2 yorum: