PHP: Veritabanı sınıfı (DataBase Class)

database class

Yazılım geliştiriciler için en temel konu, kod yinelemeden kurtulup daha sade ve pratik bir şekilde class yapısı kullanmaktır. Veritabanı işlemlerinde her sorguda sırasıyla mysql_connect, mysql_query, myql_num_rows, mysql_fetch_array komutlarını hiyerarşisine uygun şekilde kullanmak fazlasıyla zaman kaybıdır.

Bu yüzden bu yazıda inceleyeceğimiz  DatabaseClass sınıfını kullanarak veritabanı bağlantısını her sayfada bir defa açmak ve sayfa altında da bir defa kapatmak yeterli olacaktır.  Öntanımlı basit fonksiyonlar yardımıyla da ihtiyacımız olan bütün mysql komutlarını rahat bir şekilde kullanabileceğiz.

Kişisel olarak sürekli kullandığım bu sınıfı mysql.php dosyası altında tutuyorum. Kodlarını inceleyelim;

mysql.php


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 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.

?>

$dba nesnesi ile istenilen heryerde Class yapısının bütün fonksiyonunu kullanabiliriz.

Aşağıda örnek bir index.php ile $dba nesnesinin kullanımını inceleyelim.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Veritabanı sınıfı örnek kullanımı</title>
</head>
<body>

<?php
require_once("mysql.php");
/**
Yukarıdaki satırla birlikte mysql.php bu dosyaya dahil edilir
ve aynı anda $dba nesnesi oluşturulur.
Aynı zamanda veritabanı baglantımızda açılır.
*/

$sql=$dba->query("SELECT * FROM post"); //ornek query sekli

$adet=$dba->num_rows($sql); //$sql query değişkeninde kaç satır veri oldugunu hesaplar

while($row=$dba->fetch_assoc($sql)){
//ben genelde fetch_assoc kullanıyorum,
//aynı zamanda fetch_array da kullanilabilir.

//satirlar tek tek ele aliniyor

echo $row['title']; // ornek olarak post tablosundaki title verilerini yazdiriyoruz

}

//bütün veritabanı işlemleri bittiginde bağlantıyı kapatmamız gerekiyor.
$dba->close();
?>

</body>
</html>

Atilla Akoğlu

Creating web applications since 2004. e-commerce, entrepreneur and enterprise advisor. Always open for new projects, ideas and deals...  

Website - Twitter - Facebook - More Posts

3 Comments

  • 26 Şubat 2010 - 11:19 | Permalink

    güzel bir kod paylaşım için teşekkür

  • 13 Mart 2010 - 01:06 | Permalink

    Güzel sınıf incelemekte fayda var tek sorgu için tek fonksiyon olarak ben de burada yazmıştım…

    http://erhanaslan.com/kisaltilmis-php-mysql-sorgu-fonksiyonu.html

  • Yuri
    05 Temmuz 2010 - 16:56 | Permalink

    close fonksiyonu yerine__destruct ile class ile ilgili işlemler bittiğinde connection kapatabilir ardındanda bellekten unset ile kaldırılabilir

  • Bir Cevap Yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

    *

    Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>