ezSQL Veritabanı Sınıfı #4
Ne Öğreneceğim?
- ezSQL Veritabanı Kurulumu
- ezSQL Kullanımı
- ezSQL Değişkenleri
- ezSQL Debug ve Önbellekleme
Gereksinimler
- MySQL Server
- ezSQL Eklentisi
Zorluk
- Orta Düzey
ezSQL Değişkenleri
$DB->NUM_ROWS
Hangi metot ile olursa olsun, veritabanı üzerinde gerçekleştirilmiş son SQL sorgusundan kaç adet döndürüldüğünü tutar. Örneğin; veritabanından kayıt çekecek bir sorgu gerçekleştirdiğinizde $db->num_rows ile kriterlerinize uygun sonuç bulunup bulunmadığını veya kaç adet bulunduğunu öğrenebilirsiniz. Eğer $db->num_rows değeri sıfırdan büyük ise, uygun bir kayıt bulunmuş demektir.
<?php
include_once "config.php";
$sonuc = $db->get_results("SELECT * FROM kimlik WHERE id > 1");
echo "Bu sorguya uygun " . $db->num_rows . " adet kayıt bulundu.";
#Bu sorguya uygun 2 adet kayıt bulundu.
?>
$DB->INSERT_ID
Veritabanına INSERT komutu ile yeni bir kayıt eklediğinizde, eklenen kaydın ID (identity) değerinin ne olduğunu bilemezsiniz. Bu değeri bulmak için ya hazır MySQL komutu kullanacaksınız ya da başka bir sorgu ile kayıt sorgulayıp ID değerini bulmaya çalışacaksınız. ezSQL kütüphanesi için bu durum düşünülmüş ve MySQL fonksiyonları yardımıyla eklenen son kaydın ID değerini tutan özel bir değişken oluşturulmuştur.
$db->instert_id özel değişkeninde son olarak INSERT deyimi kullanılan tabloda bulunan auto_increment özelliğine sahip alan bulunarak bu alanın almış oldupu değeri hafızada saklar. Aşağıdaki örneği çalıştırdığınızda veritabanına eklenen kaydın ID değerini kontrol edin.
<?php
include_once "config.php";
$sonuc = $db->query("INSERT INTO kimlik VALUES (NULL, 'Sedat Yildiz', 'Izmir')");
echo "Eklenen kaydın ID değeri = " . $db->insert_id;
$Eklenen kaydın ID değeri = 4
?>
$DB->ROWS_AFFECTED
Toplu olarak veritabanında INSERT, UPDATE ve DELETE işlemleri yapıldığında, sorgudan kaç adet kaydın etkilendiğini $db->rows_affected özelliği ile öğrenebilirsiniz.
<?php
include_once "config.php";
$sonuc = $db->query("DELETE FROM kimlik WHERE id > 2");
echo "Veritabanından " . $db->rows_affected . " adet kayıt silindi.";
$Veritabanından 2 adet kayıt silindi.
?>
Hata Raporlama
Veritabanı ile çalışırken bazen istenmedik durumlarda hatalı tablo veya sütun adları yazıldığında PHP yorumlayıcısı veritabanından dönecek olan hata için Warning seviyesinde hata oluşturur. Bu hataları gizlemek için $db->hide_errors( ) metodu kullanılır. Eğer gizlediğiniz hataları bazı bölümlerde göstermek için $db->show_errors( ) metodu kullanabilirsiniz. Ön tanımlı olarak zaten $db->show_errors( ) metodu aktiftir. Veritabanında gerçekleştirdiğiniz hatalı sorgu ile ilgili bilgiler $db->last_error özelliğinde tutulur.
<?php
include_once "config.php";
$db->hide_errors( );
$db->query("hatalı SQL sorgusu");
if ($db->last_error) {
$db->vardump($db->last_error);
}
?>
Yukarıdaki örnekte hatalı SQL deyimi çalıştırılmak istenmektedir. SQL deyiminden önce ezSQL'in hataları gizleme metodu olan $db->hide_errors( ) metodu kullanıldığından, Warning sevisyesindeki hata uyarısı ekranda görüntülenmeyecektir. Hata ile ilgili bilgilerin tutuldupu $db->last_error ile ilgili bilgileri ekrana basmak için $db->vardump( ) metodu kullanılmıştır.
Sorguları Önbelleğe Alma
ezSQL veritabanı sınıfının belki de en çok faydalı olduğu konusu, sorguları önbellekte saklayabilme kapasitesidir. Çok sık değişmeyen sorguları önbelleğe alarak veritabanında sorgulamak yerine diskten çapırmak, veritabanını daha az yoracaktır. Eğer web sayfanızın trafiği yüksek ise bazı sorguları önbelleğe almak performansı olumlu yönde etkileyecektir. Yine de ezSQL sınıfının önbelleğe çok iyi olduğu söylenemez. Önbellek konusunda profesyonel çözümler arıyorsanız memcached konumu incelemenizi kesinlikle tavsiye ederim.
<?php
include_once "config.php";
$db->cache_dir = 'ezsql_cache';
$db->use_disk_cache = true;
$db->cache_timeout = 24;
$db->cache queries = true;
#Bu aralıktaki tüm sorgular önbelleğe alınır.
$db->get_results("SELECT * FROM kimlik");
$db->debug( );
$db->cache_requires = false;
#Bundan sonraki sorgular önbelleğe alınmaz.
$db->get_results("SELECT * FROM kimlik LIMIT 100");
$db->debug( );
#yeni kayıt ekle
$db->query("INSERT INTO kimlik VALUES (NULL, 'Sedat Yildiz', 'Izmir')");
?>
Yukarıdaki uygulamayı çalıştırmadan önce, önbellek dosyalarının tutulacağı klasörü oluşturmanız gerekmektedir. Çalışma dizininize, $db->cache_dir özelliğine vermiş olduğunuz değer ile aynı isimde bir klasör oluşturun ve daha sonra uygulamayı test edin.
Örneğe göre, önbelleğe alınan sorgular 24 saat süreyle ezsql_cache dizini altında saklanacaktır. Eğer bir sorguyu önbelleğe alacaksanız $db->cache_queries özelliğine true verip sorgunuzu yazın ve önbelleğe alınacak sorgudan sonra $db->cache_queries özelliğine falsedeğeri vererek daha sonraki sorguların önbelleğe alınmasını engelleyin.
Dikkat etmeniz gereken bir nokta şu: Eğer siz SELECT * FROM kimlik sorgusunu önbelleğe almış iseniz, bu sorguyu nerede kullanırsanız kullanın değer veritabanından değil, diskte saklanan önbellekten alınır Bu nedenle, ikinci sorguyu değiştirerek SELECT * FROM kimlik LIMIT 100 yaptık.
Sayfayı ilk kez çalıştırdığınızda her iki sorgudan dönen sonuçlar eşit olacaktır. Çünkü ilk defa çalıştırıldığından ekrana basılan sonuçlar ile önbelleğe alınanlar eşit. Fakat ikinci defa çalıştırdığınızda ilk sorgunuz diskten okunurken, ikinci sorgu veritabanından okunacaktır. Her yenilemede veritabanına kayıt eklenmesine rağmen ilk sorgu asla değişmeyeceltir. Çünkü bu sorgu 24 saat geçerli olacak şekilde diske kaydedildi.
Son olarka, çalışma dizininizde oluşturduğunuz ezsql_cache klasörünün içini kontrol ettiğinizde bir dosya olduğunu fark edeceksiniz. Bu dosyayı notepad ile açtığınıza önbelleğe alınmış sorguda ekrana basılan verilerin saklandığını açıkça anlayabilirsiniz. Eğer bu dosyayı silerek uygulamayı yeniden çalıştırırsanız; artık veritabanından sorgu çekilecek ve yeniden diske önbellek dosyası oluşturulacaktır.
Dördüncü dersimizle beraber ezSQL serimiz bitmiştir. Yapamadığınız veya takıldığınız noktaları konu altından sorabilirsiniz. Vakit ayırıp okuduğunuz için teşekkür ederim, kolay gelsin.
Seri
ezSQL Veritabanı Sınıfı #1
ezSQL Veritabanı Sınıfı #2
ezSQL Veritabanı Sınıfı #3
ezSQL Veritabanı Sınıfı #4
Posted on Utopian.io - Rewarding Open Source Contributors

Thank you for the contribution. It has been approved.
You can contact us on Discord.
[utopian-moderator]
Thanks
Hey @sedatyildiz I am @utopian-io. I have just upvoted you!
Achievements
Suggestions
Get Noticed!
Community-Driven Witness!
I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!
Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x