Veritabanı Sınıfı

Nursen

Paylaşımcı Üye
Katılım
24 Nis 2020
Mesajlar
1,046
Beğeniler
5
Açıklama:
Yaptığım çalışmalarda kullanmak için yazmış olduğum bir projeden bağımsız veritabanı objem var.Temel özellikleri, bağlantı açmak-kapamak, sorgu göndermek-karşılamak, hafızayı temizlemek, işlem ve hata logları tutmak gibi şeyler.En büyük avantajı ise bir işlem yaparken
$sorgu = @mysql_query('SELECT alan FROM tablo') or die('Hata');
şeklinde degilde
$vt->sql_sorgu('SELECT alan FROM tablo');
ifadesinin yetiyor olması, nesne tabanlı olduğu için siz bunu yapınca zaten hata oluşursa gerekeni yapıyor ve tüm sorguları ayrı bir log dosyasında tutuyor.İncelemenizi tavsiye ederim.Yalnız şöyle birşeyde ekledim sorgu loglarını tutarken, sorgu cümlesinin yanında $sorgu değerinide kaydettirdiğim için log dosyasına bakınca resource id #2 gibi bir ifade gozüküyor.silecektim ama hoş duruyo dedim kalsın bari.

Kod:
<?php 
/* 
  Veritabanı Nesnesi 
  ----------------------- 
  Dosya: [INC]veritabani.php 
  Yazan: Pan <panie<span class="userTag">@gamebox.net></span> 
  Tarih: 13 Temmuz 2004 
  İşlev: Çok fonksiyonlu veritabanı nesnesi. 
*/
### Veritabanı değişkenleri ve ayarları ### 
$vt['alan'] = 'localhost';     // Veritabanının çalıştığı alan 
$vt['yonetici'] = 'root';     // Veritabanı yöneticisinin kullanıcı adı 
$vt['yonetici_sifre'] = '';     // Veritabanı yöneticisinin şifresi 
$vt['kullan_vt'] = 'deneme';     // Kullanılacak veritabanı adı 
$vt['hata_log'] = '../loglar/vt_hata.log';     // Hata kayıtlarının tutulacağı dosya 
$vt['islem_log'] = '../loglar/vt_islem.log';     // Veritabanına yapılan sorguların tutulacağı dosya 
$sql['varsayilan_satir'] = 0;     // Sorgudan tek satır çekilirken, satır belirtilmezse, varsayılan olarak kullanılacak satır numarası 
$sql['varsayilan_sutun'] = 'id';     // Yukarıdakinin, numara değilde, sütun olan hali 
### Veritabanı Nesnesi ### 
class Veritabani { 
    # Nesne Değişkenleri # 
    var $vt_baglanti;     // Veritabanı bağlantısı yapıldıktan sonra, bağlantı numarası bu değişkene atanır 
    var $vt_secim;     // Veritabanı seçimi yapıldıktan sonra, dönen değer buraya atanır 
    var $tarih;     // Nesne çağrıldığı andaki tarihi tutar 
    var $dosya;     // Şuanda üzerinde çalışılan dosya yolu ve ismini tutar 
    var $sonsorgu;     // Son yapılan SQL sorgusunu tutar 
    # Nesne Fonksiyonları # 
    function Veritabani() {     // Nesne çağrıldığında dosya ile ilgili belirlemeleri yapar 
        $this->tarih = date('d/m/Y H:i'); 
        $this->dosya = __FILE__; 
    } 
    function vt_baglan() {     // Veritabanı bağlantısı sağlar ve kullanılacak veritabanını seçer 
        global $vt; 
        if (!$vt['baglanti'] = <span class="userTag">@mysql_connect($vt[</span>'alan'], $vt['yonetici'], $vt['yonetici_sifre'])) { 
            $this->vt_hata(mysql_errno(), mysql_error()); 
        } 
        if (!$vt['secim'] = <span class="userTag">@mysql_select_db($vt[</span>'kullan_vt'])) { 
            $this->vt_hata(mysql_errno(), mysql_error()); 
        } 
        $this->vt_baglanti = $vt['baglanti']; 
        $this->vt_secim = $vt['secim']; 
        return $this->vt_baglanti; 
    } 
    function vt_kapat() { 
        if (!$kapat = <span class="userTag">@mysql_close($this-></span>vt_baglanti)) { 
            $this->vt_hata(mysql_errno(), mysql_error()); 
        } 
        return $kapat; 
    } 
    function vt_hata($hatano, $hata) {     // Veritabanı hata raporu tutar ve bunları dosyada saklar 
        global $vt; 
        $hata_mesaj = "Hata Tarihi: <".$this->tarih.">\r\nHatalı Dosya: <".$this->dosya.">\r\nHata No: <$hatano>\r\nHata: <$hata>\r\n--------------------------------------------\r\n"; 
        $hatalog_dt = <span class="userTag"><span class="userTag">@fopen($vt[</span></span>'hata_log'], 'a+'); 
        if ($hatalog_kaydet = @fputs($hatalog_dt, $hata_mesaj)) { 
            $donen_deger = 1; 
        } else { 
            $donen_deger = 0; 
        } 
        <span class="userTag">@fclose($hatalog_dt);</span> 
        $mesaj_goster = '<h1>Veritabanı Hatası</h1> 
        <p>Üzgünüz, servislerimizde bir veritabanı hatası oluştu, hata site yöneticisine bildirildi.<br /> 
        Lütfen siteye, daha sonra tekrar geliniz, teşekkür ederiz.</p>'; 
        die($mesaj_goster); 
        return $donen_deger; 
    } 
    function vt_log($sorgu_cumle, $sorgu) {     // Veritabanına yapılan sorguların raporunu tutar 
        global $vt; 
        $log_kayit = "İşlem Tarihi: <".$this->tarih.">\r\nİşlem Yapılan Dosya: <".$this->dosya.">\r\nSorgu Cümlesi: <$sorgu_cumle>\r\nSorgudan Dönen Değer: <$sorgu>\r\n--------------------------------------------\r\n"; 
        $log_dt = <span class="userTag"><span class="userTag">@fopen($vt[</span></span>'islem_log'], 'a+'); 
        if ($log_kaydet = @fputs($log_dt, $log_kayit)) { 
            $donen_deger = 1; 
        } else { 
            $donen_deger = 0; 
        } 
        <span class="userTag">@fclose($log_dt);</span> 
        return $donen_deger; 
    } 
    function vt_hafiza($sorgu = '') {      // Sorgudan dönen veri varsa, bunlar için hafıza ayrılır, nu fonksiyon o hafizayı boşaltır 
        if ($sorgu == '') { 
            $sorgu = $this->sonsorgu; 
        } 
        if (!$temizle = @mysql_free_result($sorgu)) { 
            $this->vt_hata(mysql_errno(), mysql_error()); 
        } 
        $this->sonsorgu = NULL; 
        return $temizle; 
    } 
    function sql_sorgu($sorgu_cumle) {     // Veritabanına, SQL sorgusu gönderir 
        if(!$sorgu = @mysql_query($sorgu_cumle)) { 
            $this->vt_hata(mysql_errno(), mysql_error()); 
        } 
        $this->vt_log($sorgu_cumle, $sorgu); 
        $this->sonsorgu = $sorgu; 
        return $sorgu; 
    } 
    function sql_satircek($sorgu = '', $satir = '', $sutun = '') {     // Yapılan sorgudan dönen değeri tek satır olarak alır (bkz: mysql_result()) 
        global $sql; 
        if ($sorgu == '') $sorgu = $this->sonsorgu; 
        if ($satir == '') $satir = $sql['varsayilan_satir']; 
        if ($sutun == '') $sutun = $sql['varsayilan_sutun']; 
        if (!$satircek = @mysql_result($sorgu, $satir, $sutun)) { 
            $this->vt_hata(mysql_errno(), mysql_error()); 
        } 
        return $satircek; 
    } 
    function sql_toplamkayit($sorgu = '') {     // Bir sorgudan dönen toplam kayıt sayısını verir 
        if ($sorgu == '') $sorgu = $this->sonsorgu; 
        if (!$toplamkayit = @mysql_num_rows($sorgu)) { 
            vt_hata(mysql_errno(), mysql_error()); 
        } 
        return $toplamkayit; 
    } 
} 
### Nesne Testi ### 
$Vt = new Veritabani; 
$Vt-> vt_baglan(); 
$Vt-> sql_sorgu('SELECT isim FROM personeller LIMIT 1'); 
$satir = $Vt-> sql_satircek('', '', 'isim'); 
$Vt-> vt_hafiza(); 
$Vt-> vt_kapat(); 
echo $satir; 
?>
 

Şu anda bu konu'yu okuyan kullanıcılar

Benzer konular

Üst