Merhaba Arkadaşlar;
Bu dökümanımızda size veritabanı sınıfımdan bahsedeceğim.
Yıllarca yazılım yapmış bir geliştirici olarak her yazdığım uygulamada daha kolay kullanıma sahip bir veritabanı sınıfımın olmasını istemiştim.
İtiraf ediyorum, ilk zamanlar yazdığım bir çok uygulamada başkalarının yazdığı veritabanı sınıflarını kullandım.:)
Çok zor zamanlardı.:))
Başkasının yazdığı kodları anlamaya çalışmak hevesimi oldukça kırıyordu fakat kendi veritabanı sınıfımı henüz yazamamıştım ve bu yüzden tecrübeye ihtiyacım vardı.
Sonradan ufak ufak ihtiyaçlarımı karşılayacak fonksiyon kütüphaneleri oluşturmaya başladım. Hatta onlardan bir tanesini sizinle paylaşayım.
function mysql_exec($query) {
$link = mysql_connect('localhost', 'root', '') or die('Could not connect: ' . mysql_error());
mysql_select_db('denemedb') or die('Could not select database');
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
mysql_close($link);
return $result;
}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.Aslında temel düzeyde bir çok yeni yazılımcının işini görecektir.
Hatta çok büyük veritabanı sınıfı kullanmadığım ufak php uygulamalarında hala bunu kullanırım..
Öncelikle veritabanı sınıfına neden ihtiyaç duyarız ile ilgili bir soru geldiyse aklınıza bence bu makaleyi burada kapatıp daha temel konulara girişmelisiniz. Boşuna değerli vaktinizi harcamayın.
Sonra tekrar dönüp dolaşıp geleceğiniz yer yine burası olabilir.
Şimdi sıra geldi yeni dbclass’ımıza.
Bütün veritabanı işlemlerini tek bir sınıf ile yapmak çok keyifli 🙂
Kodların içeriğine tek tek değinmeyi doğru bulmuyorum.
Çünkü kod dediğin syntax yapısıdır.
Sadece size mantık olarak neyi amaçlayıp neyi yaptığımı detaylandıracağım.
class içerisinden private olarak erişilebilecek değişkenlere yine class içerisinde fonksiyonlar yazarak erişip bu fonksiyonlardan veritabanı işlemleri yaptırıyorum.
dbclass.php dosyamızı oluşturduktan sonra aşağıdaki kodları içine yazdık.
conn = @mysql_connect($this->host, $this->user, $this->pass)
or die("Veritabanımızda meydana gelen bir sorun yüzünden geçici bir süreliğine hizmet verememekteyiz");
@mysql_query("SET NAMES 'utf8'");
@mysql_query("SET CHARACTER SET 'utf8'"); //dil secenekleri
@mysql_query("SET COLLATION_CONNECTION = 'utf8_turkish_ci'");
$select_db = @mysql_select_db($this->db) or die("Veritabanı seçilemedi");
}
function query($a) {//standart sorguların calistirildigi fonksiyon
return @mysql_query($a,mysql_connect($this->host, $this->user, $this->pass));
}
function fetch_array($result)
{
return @mysql_fetch_array($result);
}
function fetch_assoc($result)
{
return @mysql_fetch_assoc($result);
}
function fetch_object($result)
{
return @mysql_fetch_object($result);
}
function num_rows($result)
{
return @mysql_num_rows($result);
}
function affected_rows()
{
return @mysql_affected_rows();
}
function free_result($result)
{
return @mysql_free_result($result);
}
function insert_id()
{
return @mysql_insert_id();
}
function result($result){
return @mysql_result($result,0);
}
function close(){
return @mysql_close($this->conn);
}
}
//$dba = new DatabaseClass; // dba isimli Veritabani nesnesi olusuyor.
//$dba->connect(); //mysql.php include edildigi anda veritabani baglantisi acilir.
?>
Yukarıdaki kodları oluşturduktan sonra örneğin başka bir sınıftan yada, sayfadan, yada fonksiyondan sınıfımızı çağırıp içindeki fonksiyonlara erişip veritabanı işlemleri yaptırabiliriz.
Mesela select işlemi.
connect();
$sql = $dba->query("select * from ".$this->tabloAd ."
where id =$Anahtarid");
$sonuc = $dba->fetch_object($sql);
return $sonuc;
}
}
?>
Başka bir sayfada bir anahtar sınıfı yada anahtar fonksiyonu yarattığımızı düşünelim.
bu fonksiyonun içine yazacağımız $dba = new dbClass() işlemi sonuçlandığında artık dbclass’ımız tamamen erişilebilir olacaktır. Ve bu class’ın içindeki query fonksiyonu adeta bir makina gibi tıkır tıkır çalışacaktır.
Tablodan çoklu veri çekme için aşağıdaki kodu;
public function AnahtarlariGetir($pagerWhere ="",$aramaString=""){
$dba = new dbClass();
$dba->connect();
$sql = $dba->query("select * from ".$this->tabloAd ." $aramaString order by id asc $pagerWhere");
while(@$sonuc =$dba->fetch_object($sql)){
$r[] =$sonuc;
}
return $r;
}
Fakat bu çekilen veri bir array olacağı için bunun içinde foreach ile dönmeyi unutmamalısınız 🙂
Tabloya veri eklemek için aşağıdaki kodu;
public function AnahtarEkle($Anahtarad){
$dba = new dbClass();
$dba->connect();
//echo "insert into ".$this->tabloAd ." (anahtarad,ozel) values('$Anahtarad',$ozel)";
$sql = $dba->query("insert into ".$this->tabloAd ." (anahtarad) values('$Anahtarad')");
$sonuc = $dba->insert_id($sql);
return $sonuc;
}
Tablodaki veriyi düzeltmek için ;
public function AnahtarDuzenle($Anahtarid,$Anahtarad){
$dba = new dbClass();
$dba->connect();
$bir = new Anahtarlar();
$sql = $dba->query("update ".$this->tabloAd ." set anahtarad ='$Anahtarad' where id =$Anahtarid");
$sonuc=1;
return $sonuc;
}
Ve son olarak tablodaki kaydı silmek için aşağıdaki kodu kullanabilirsiniz.
public function AnahtarSil($anahtarid){
$dba = new dbClass();
$dba->connect();
$sql = $dba->query("delete from ".$this->tabloAd ." where id =$anahtarid");
$sonuc=1;
return $sonuc;
}
Ha yok bana sadece query yetmiyor ben bu query’i ekle, sil, düzenle, vericek, cokluvericek şeklinde yapamaz mıyım ? diye sorduğunuzu duyar gibiyim.
Tabiiki yapabilirsiniz, hatta yapın bence, Size ödev olsun 🙂