PHP Dersleri

PHP ile PDO MySQL Veri Tabanından Veri Çekme

PDO ile veri tabanı bağlantısının nasıl yapıldığını işledikten sonra, şimdi ise veri tabanında yer alan bilgileri nasıl listeleyeceğimizi anlatacağım. Buradaki listeleme işleminde sadece belirtilen şartlar doğrultusunda gerçekleşecek tek verinin nasıl çekileceğini anlatmış olacağım. Çoklu veri listeleme işlemini ise bir sonraki derste işlemiş olacağız.

Veri listeleme işlemini yaparken karşımıza 2 yol ayrımı çıkmaktadır. Bundan ilki veri çekerken sadeliktir. Diğeri ise güvenliktir. Yazacağımız sorgunun yapacağı işleme göre bu ayrım doğrultusunda kod yapısını ayarlamalıyız.

Sade ve Basit Olarak Veri Çekme İşlemi

Basit bir şekilde belirlediğimiz şart doğrultusunda veri çekmek istiyorsak o zaman aşağıda yer alan kodu kullanmamız gerekmektedir. (Veri tabanı bağlantısının $db olarak oluşturulduğu var sayılmıştır.)

$veri = $db->query("select * from makale where id='2' and durum='0'")->fetch();

Bu kod ile id değeri 2, durum değeri 0 olan veriye ulaşılacaktır. Bu sorgudan gelen değeri ekrana yazdırmak için ise; echo $veri[“baslik”] demeniz yeterli olacaktır.

Güvenlik Tedbirli, Değişkene Atamalı Veri Çekme İşlemi

Veriye ulaşma aşamasında yapılan sorguda belirlediğimiz değer karşılıklarını başka bir parametrede belirterek güvenli ve düzenli bir sistem oluşturmuş oluyoruz. Bu sayede SQL Injection açıklarından kurtulmuş oluyoruz.

İlk sorguda kullanılan query(); methodu yerine burada prepare(); metodunu kullanıyoruz. Prepare ile hazırladığımız sorguda gelen değerlerin karşılığını “?” (Soru işareti) olarak belirtiyoruz. Burada yer alan verilerin karşılığını ise execute metodunda belirtiyoruz. Bu sayede verileri daha güveli bir biçimde işlemiş oluyoruz.

Yukarıda sözü geçen deyim uygulandığında örneğimiz aşağıdaki gibi olacaktır.

$veri     = $db->prepare("select * from makale where id=? and durum=?");
$veri->execute(array("2","0"));
$islem    = $veri->fetch();

Burada yer alan “?”(Soru işareti) ile belirtilen alanların değerleri execute ‘da sıralı bir biçimde yazılmalıdır. Eğer olur da burada yazılan değerleri karıştırırım diyorsanız o zaman şöyle bir alternatif uygulayarak gelen değerlerin karşılığını bir Array değişken adına çevirebiliriz. Bu sayede oluşacak karışıklığı da önlemiş olacağız.

$veri = $db->prepare("select * from makale where id=:id and durum=:durum");
$veri->execute(array("id" => "2","durum" => "0"));
$islem    = $veri->fetch();

Bu şekilde yazılarak gene güvenlik tedbirlerini almış oluyoruz. Bu bölümde yer alan 2 kodlama çeşidi de aynı görevi üstlenmektedir.

Burada yer alan 3 sorguda çıktı olarak aynı sonuçları verecektir. Fakat yazım farklılıklarından dolayı 2 ve 3. Kodlar daha güvenli bir şekilde işlem görecektir. Yani SQL Injection açıklarından kurtularak işlem yapacaktır.

İlgili Makaleler

Bir yanıt yazın

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