3 Mayıs 2012 Perşembe

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


 SQLite kavramı birçok kişi için pek de eski bir ifade sayılmaz. SQLite 2000’li yılların henüz başlarında Richard Hipp tarafından geliştirilmiştir. C programlama dili ile üretilmiş, sunucusuz çalışabilen ve tamamen işlemsel bir veritabanıdır. 


Açık kaynak kod platformu dahilinde en çok dağıtılan yazılımlardan biridir. Bunun en büyük sebepleri oldukça hızlı ve kullanımının basitçe olmasıdır. Konsol üzerinden bile SQL kabul edebilmektedir. PHP ile etkileşim hikayesi ise PHP 5.0 ‘dan itibaren başlamıştır. Hız ve performans olarak oldukça etkili olan SQLite, MYSQL ya da POSTGRESQL veritabanlarından daha hızlı olması açısından da büyük önem taşımaktadır. Veri depolama kapasitesi yadsınamaz. 2 TB -> 2048 GB veri depolayabilmektedir. Bugün çok büyük şirketler SQLite yazılımını kullanmaktadırlar. Google, Sun, Mozilla, Apple ve Adobe gibi kuruluşlar bunlara birer örnek olarak gösterilebilir.

Ayrıca SQLite, Birçok programlama dili ile de uyumlu olması açısından oldukça önemli bir veritabanı yazılımı olarak kabul edilmektedir. PHP, ASP, BASIC, C, C++, C#, JAVA, VISUAL BASIC, DELPHI, R, PERL ve PYHTON gibi programlama dilleri buna örnek gösterilebilmektedir.


SQLite Yapılandırması

Bu yazılımı kullanabilmek için öncelikle sqlite.org sitesine girip, download bölümünden SQLite yazılımını bilgisayarınıza indirmeniz gerekmektedir. İndirilen .zip formatlı dosya içerisinde bulunan sqlite3.exe tarzında bir program çalıştırılıp konsol görüntüsü elde edilmesi SQLite kullanımına başladığınızı gösterecektir.

SQLite veritabanı ekran çıktısı

SQLite Üzerinde İşlem Yapmak

SQLite üzerinde işlem yapabilmek, aslında SQL ile işlem yapmakla eş değerdir. Nitekim yapılan işlemler bilinen SQL işlemlerinden başka bir şey değildir. Veritabanı içerisinde tablo oluşturmak, veri eklemek, silmek, güncellemek ve görüntülemek işlemleri SQLite ile tamamen SQL uygulanarak yapılabilecek basit işlemler olarak nitelendirilebilmektedirler.

SQL konusunda, veritabanı üzerinde bir tablo oluşturma işlemini hatırlayabiliriz. Aynı işlemler aynı şekilde, fakat bu sefer SQLite üzerinde gerçekleşmektedir.

SQLite ile veritabanında bir tablo oluşturmak

Görüldüğü gibi CREATE TABLE ile veritabanında rehber adında bir tablo oluşturduk. id, isim ve telefon sütunları tasarladık. Daha sonra yaptığımız işlemi teyid etmek amacıyla SQLite konsol satırına .tables yazdık. SQLite komutlarından biri olan .tables, veritabanı içerisinde bulunan tabloların listesini veren bir komuttur. SQLite bunun gibi birçok komuta sahiptir. SQLite konsol satırına .help yazılıp enter tuşuna basıldığında, karşımıza bu komutlar ve işlevleri dizilecektir.

SQLite komutları - .help ekran görüntüsü

Bazı SQLite Komutları

SQLite Komutu


İşlevi

.tables
Veritabanı içerisinde bulunan tabloları listeler.
.databases
Veritabanlarını listeler.
.exit
SQLite konsol kapama işlemini gerçekleştirir.
.help
Yardım almak için mesaj sayfası açar.
.dump
Veritabanını dışarı aktarır.
.output filename
Veritabanında bulunan verileri .sql formatlı dosya haline getirmeye yarar. Depolama işlevi görür.


Veritabanı'na şekildeki gibi eklenen rehber tablosuna veri ekleyelim ve  bu eklenilen verileri ekrana yazdıralım.

rehber tablosuna veri ekleme ve ekrana yazdırma

Yukarıda görüldüğü gibi, id numarası 1 ve 2 olan isim, Gökhan Satman ve Mehmet Akif Birkan olan, telefonu 111 ve 222 olan iki veri, rehber tablosuna eklenmiştir. Sonra ise SELECT deyimi ile ekrana yazdırılmıştır. Buraya kadar veritabanında tablo oluşturma, tabloya veri ekleme, ekrana yazdırma gibi işlemler yaptık. Güncelleme ve silme işlemleri de bunları muhtemel takip edecek işlemlerdir. Hatırladığınız gibi silme işlemi DELETE, güncelleme işlemi ise UPDATE ile yapılmaktaydı.

rehber tablosundan veri silme ve veri güncelleme

Ekran çıktısı dikkatlice incelendiğinde, id numarası 2 olan verinin silindiği, id numarası 1 olan verinin ise isim sütununun güncellendiği görülecektir.


PHP ile SQLite Uyumu

PHP ile SQLite arasında bir uyum sorunu yaşanıyorsa, kullanılmakta olan PHP versiyonu muhtemelen 5.0 ’dan önceki bir versiyondur. Çünkü SQLite eklentisi PHP 5.0 versiyonundan itibaren ön tanımlı olarak etkin olmuştur.

Kullandığınız PHP versiyonunun, SQLite ile ilişkilendirilmiş olup olmadığını phpinfo() ile anlayabileceğinizi, daha önceki konulardan hareketle anlamak pek de zor olmayacaktır. Zira phpinfo(); olarak hazırlanan phpinfo.php sayfası kullanılmakta olan PHP versiyonu ile ilgili tüm gerekli bilgiyi ekranda listeleyecektir.

phpinfo.php


<?php
phpinfo();
?>




phpinfo.php sayfası ve SQLite ile uyum incelemesi

PHP ile SQLite Bağlantısı : sqlite_open()

PHP, geniş kütüphanesi sayesinde bir çok yazılım ile iç içe çalışabilmektedir. Bunlardan biri de hiç şüphe yok ki SQLite veritabanı motorudur. MYSQL ile oldukça benzerlik gösteren fonksiyonları ile biz programcıları hiç de zorlamayacak bir alt yapıya sahiptir.

MYSQL ile SQLite fonksiyonlarının karşılıkları

MYSQL Fonksiyonu


SQLite Fonksiyonu

mysql_connect
sqlite_open
mysql_query
sqlite_query
mysql_fetch_array
sqlite_fetch_array
mysql_fetch_row
sqlite_fetch_array
mysql_close
sqlite_close
mysql_num_rows
sqlite_num_rows
mysql_insert_id
sqlite_last_insert_rowid


MYSQL veritabanı ile SQLite arasındaki benzerlik doğal olarak veritabanı bağlantısı benzerliğine de yansımıştır. Zira mysql_connect() fonksiyonu ile sqlite_open() fonksiyonu benzer bir görev ve parametre topluluğu içermektedir.

PHP ile SQLite veritabanı bağlantısı


sqlite_open( bağlanılacak dosya, izin kipi, hata mesajı )



Yukarıdaki fonksiyon parametreleri incelendiğinde, bağlanılacak dosyanın (dosya.db) bir veritabanı, izin kipinin dosyaya erişim izin kipi olduğu ve hata mesajının da adından anlaşılacağı gibi bir hata mesajı olduğu söylenebilmektedir. İzin kipi 0666 sekizlik chmod değeri olarak ön tanımlıdır. Hata mesajı ise manuel bir değerdir.

sqlite_open() fonksiyonu ve parametreleri


$dosya = "c:/phpservisi.com/dosya.db";
$hata = "Bağlantı tanımlanamadı.";
sqlite_open($dosya, 0666, $hata);



SQLite konsol üzerinden tablo oluşturmak ya da diğer SQL işlemlerinin diğer veritabanı programlarındaki işlemler ile aynı olduğunu artık biliyoruz. Burada önemli olan konu, PHP ile bağlantının sağlanabilmesidir.

SQLite ile PHP


<?php
$baglan = sqlite_open("veritabanı adı", 0666, $hata_mesaj)
or die ("Bağlantı Sağlanamadı!");

$tablo_olustur = "CREATE TABLE rehber (
id integer primary key,
isim text not null,
telefon text not null
);";

$tablo_olustur_sonuc = sqlite_query($baglan, $tablo_olustur);

veri_gir1 = "INSERT INTO rehber(isim,telefon) values('Gökhan Satman','111');";
veri_gir2 = "INSERT INTO rehber(isim,telefon) values('Mehmet Akif Birkan','222');";

$veri_gir1_sonuc = sqlite_query($baglan, $veri_gir1);
$veri_gir2_sonuc = sqlite_query($baglan, $veri_gir2);

$veriler = sqlite_query($baglan, "SELECT * FROM rehber LIMIT 5");
while($listele = sqlite_fetch_array($veriler)) {
   $id = $listele["id"];
   $isim = $listele["isim"];
   $telefon = $listele["telefon"];

   echo "$id , $isim, $telefon";
}
?>


Yukarıda, daha önce de değinilen, SQLite bağlantısının yapılması işlemi gerçekleştirilmektedir. Bağlantının olumsuz olduğu durumda hata mesajı gösterilecektir.

$tablo_olustur = "CREATE TABLE rehber (
id integer primary key,
isim text not null,
telefon text not null
);";

$tablo_olustur_sonuc = sqlite_query($baglan, $tablo_olustur);

Yukarıda bulunan satırlar rehber isimli yeni bir tablo oluşturma işlemini gerçekleştirmektedir. mysql_query() fonksiyonu ile özdeş bir işlev gören sqlite_query() fonksiyonu sorguları PHP sunucuya göndermektedir.
Oluşturulan rehber isimli tablo, id, isim ve telefon sütunlarından oluşmaktadır.

veri_gir1 = "INSERT INTO rehber(isim,telefon) values('Gökhan Satman','111');";
veri_gir2 = "INSERT INTO rehber(isim,telefon) values('Mehmet Akif Birkan','222');";

$veri_gir1_sonuc = sqlite_query($baglan, $veri_gir1);
$veri_gir2_sonuc = sqlite_query($baglan, $veri_gir2);

Daha önce oluşturulan rehber tablosu içerisine veri girişi dinamik olarak yapılmaktadır.

$veriler = sqlite_query($baglan, "SELECT * FROM rehber LIMIT 5");
while($listele = sqlite_fetch_array($veriler)) {
   $id = $listele["id"];
   $isim = $listele["isim"];
   $telefon = $listele["telefon"];

   echo "$id , $isim, $telefon";
}


MYSQL ile PHP konusunda değinilen veri listeleme işlemi, herhangi bir döngü aracılığıyla çekilen verilerin çağırılması ve ekrana echo fonksiyonu ile yazdırılması şeklinde bir süreç ile tamamlanmaktadır. MYSQL veritabanında mysql_fetch_array() fonksiyonu ile yapılan sorgulama işleme SQLite veritabanı motorunda sqlite_fetch_array() fonksiyonu ile tanımlanmıştır.

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

2 yorum:

  1. PHP Parse error: syntax error, unexpected '=' \index.php on line 13
    Windows IIS 7 kullanıyorum ve bu hatayı alıyorum nasıl düzeltebilirim?

    YanıtlaSil
  2. eğer bir değişken tanımlıyorsanız "=" değişkenin içeriğini kontrol edecekseniz ==, !=, <=, >= gibi kullanmalısınız

    YanıtlaSil