PHP PEAR MDB2 modulü ile Select, Insert, Delete ve Prepare işlemleri

Pear MDB2 modulü ile profesyonel düzeyde veritabanı işlemlerini yapabileceğimizi anlmatmıştım. Şimdi bu modülü kullanarak Select, Insert, Delete ve Prepare işlemleri yapalım.

Kurulumunu yapmadıysanız ve Xampp kullanıyorsanız: PEAR-MDB2-Modulü-kurulumu sayfasında kurulumu anlatmıştım.

Pear MDB2 Modülünü kurmayı ve diğer basit işlemleri yaptığınızı farz ederekten ilk örneğimize başlayalım. Aşağıdaki kodu PHP sayfamızın en başına yerleştireceğiz. Kod kalabalığı olmasın diye MDB2 classını yaratan ve veritabanına bağlanan kodu bir kereliğine yazıyorum: (Örneğikte Mysql kullanılmıştır.)
 
 // MDB2 fonksiyonları içeren classı sayfaya dahil ediyoruz. 
require_once 'MDB2.php';

// bağlantı satırımızı hazırlıyoruz (MYSQL veritabanına bağlanır)
$dsn = 'mysql://kullanici_adi:sifre@localhost/veritabani_ismi';

// factory pattern ile MDB2 classımızı yaratıyoruz
// aynı zamanda veritabanına bağlanıyoruz.
$mdb2 =& MDB2::factory($dsn);
if (PEAR::isError($mdb2)) {
    die($mdb2->getMessage());
}
 
Select işlemleri:

Select işlemine başlamadan önce aşağıdaki örnek tabloyu yaratalım.
 
CREATE TABLE IF NOT EXISTS `people` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `isim` varchar(20) COLLATE utf8_bin NOT NULL,
  `soyisim` varchar(35) COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin ;
Daha sonra bu tablodan 5'den ve 10'a kadarki satırları alalım:
 
// sonucu alırken fetch modu associated'e alıyoruz.
// Verileri alan ismiyle almak için fetch modu set etmemiz şart.
$mdb2->setFetchMode(MDB2_FETCHMODE_ASSOC);
// sorguyu hazırlıyoruz
$sql = "SELECT * FROM people";
// 5. satırdan itibaren 5 adet satırla sınırlıyoruz. (5'den 10'e kadarki satırları alır)
$mdb2->setLimit(5, 5);
$res =& $mdb2->query($sql);

// sonucu taracıya gönderiyoruz
while ($row = $res->fetchRow()) {
	echo "
"; echo $row['isim']; echo " ".$row['soyisim']; } // verileri içeren $res dizisini hafızadan siliyoruz. $res->free();
C:\xampp\htdocs klasöründe bir php dosyası oluşturup yukarıdaki ve en yukarıdaki php okudunu birleştirip deneme.php olarak kaydedelim. İnternet tarayıcı çıktısı:



Paging (sayfalama) yapmak için aralık belirtek istenilen satırları bu şekilde almak işimizi kolaylaştırabilir. Bunun dışında istediğiniz SELECT sorgusunu yollayabilirsiniz.

Insert işlemleri:

Yarattığımız tabloya yeni bir kişi ekleyecek kodumuz:
 
$sql  = "INSERT INTO people  VALUES ( 'NEW.id', 'murat', 'ulu')";
$affected =& $mdb2->exec($sql);

// Always check that result is not an error
if (PEAR::isError($affected)) {
    die($affected->getMessage());
}
else
  echo "INSERT işlemi başarılı!";
Delete işlemleri:

Yine basit örnekle DELETE işlemi yapalım:
 
$sql = "DELETE FROM people";
// Bağlanılan veritabanın sorguları limitlemeye izin verip vermediğini kontrl eder.
// Eğer limitleme desteklenmiyorsa limitleme olmadan DELETE işlemi gerçekleştirilir.
if ($mdb2->supports('limit_queries') === 'emulated') {
    echo 'Limit önemsenmeyecek.';
}
// tablonun en başındaki 2 satırı sil
$mdb2->setLimit(2);
$affected =& $mdb2->exec($sql);

if ($affected)
 echo "Silme işlemi başarılı!";
else 
 echo "Silme işlemi başarısız";
Delete işlemleri aşağıdaki gibi WHERE ile sınırlandırılabilinir.
 
$sql = "DELETE FROM people WHERE id = 5";

$affected =& $mdb2->exec($sql);

if ($affected)
 echo "Silme işlemi başarılı!";
else 
 echo "Silme işlemi başarısız";
Prepare işlemleri:

Prepare işlemi en önemli, en güzel, en profesyonel kısım. Prepare ile önce sorguları hazırlıyoruz daha sonra varsa SQL parametrelerini bağlıyoruz ve sorguyu çalıştırıyoruz.

Bir kaç örnek yapalım.
people tablosuna yeni bir satır girelim:
 
// Auto Increment olan id alanını sequence olarak set eder 
// böylece bir sonraki id numarasını nextId ile almamızı sağlar.
$mdb2->setOption('seqcol_name', 'id');

// soru işeretleri gireceğimiz parametreleri temsil ediyor.
$sql = 'INSERT INTO people VALUES ( ?, ?, ?)';
// sorguyu hazırlıyoruz, MDB2_PREPARE_MANIP ile sorgumuzun DML olduğunu beliritiyoruz
$statement = $mdb2->prepare($sql,MDB2_PREPARE_MANIP);
// parametreleri hazırlıyoruz
$data = array($mdb2->nextId('id'), 'Merasdft', 'Ulu');
// sorguyu çalıştırıp etkilenen satır sayısını alıyoruz.
$affectedRows = $statement->execute($data);

// etkilenen satır sayısı 0'dan büyükse işlemin başarılı olduğunu anlıyoruz.
if ($affectedRows > 0)
 echo "INSERT işlemi başarılı!";
else
 echo "INSERT işlemi başarısız!";

// hazırladığımız sorguyu siliyoruz.
$statement->free();
people tablosundan id numarası 6'dan büyük olan satırı gösterelim:
 
// 5. satırdan itibaren 5 satır ile sınırlandırıyoruz sonucu
$mdb2->setLimit(5, 5);

// sorgumuzu hazırlıyoruz.
// Parametremizi hazırlarken parametre tipini ve (id, isim, soyisim) alanların tipini dizi olarak giriyoruz
$statement = $mdb2->prepare('SELECT * FROM people WHERE id > ?', array('integer'),array('integer','text', 'text'));
// SELECT * FROM people WHERE id > 6 sorgusunu çalıştırıp sonucu $result değişkenine atıyoruz.
$result = $statement->execute(6);

$mdb2->setFetchMode(MDB2_FETCHMODE_ASSOC);
// sonucu taracıya gönderiyoruz
while ($row = $result->fetchRow()) {
	echo "
"; echo $row['isim']; echo " ".$row['soyisim']; }
people tablosundan id numarası 6 olan satırı DELETE işlemi ile silelim:
 
// sorguyu hazırlıyoruz, MDB2_PREPARE_MANIP ile sorgumuzun DML olduğunu beliritiyoruz
$statement  = $mdb2->prepare('DELETE FROM people WHERE id = ?', MDB2_PREPARE_MANIP);
// DELETE * FROM people WHERE id = 6 sorgusunu çalıştırıyoruz.
$statement ->execute(6);
// hazırladığımız sorguyu siliyoruz.
$statement->free();
Gördüğünüz gibi Prepare ile bir DELETE, SELECT ve INSERT işlemleri yapabiliyoruz. Prepare sayesinde aynı zamanda SQL injectiondan da kurtulmuş oluyoruz.

Daha önce belirtiğim gibi PEAR MDB2 Modülü ile sadece Mysql değil Oracle, Mssql v.b. gibi veritabanı yönetim sistemleri ile veritabanı işlemleri yapabilirsiniz. Resmi pear-mdb2-modülü linkinden MDB2 modülünü nasıl kullanacağınızı detaylı bir şekilde öğrenebilirsiniz.
Okuyanlara umarım faydalı olmuştur.
yazan Zülküf Küçüközer tarih   26th August 2009
primary key words  Mdb2 | Paket | Veritabanı işlemleri | Php okunma  5593
secondary key words  Select | İnsert | Prepare | Delete
Bu yazı hakkında yorum yapılmamış.