• Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
PDO Veritabanı Bağlantısı
#1
Merhaba, 

Bildiğiniz gibi PHP, MySQL desteğini uzun bir süre önce kaldırdı. Bu da bir çoğumuzun scriptlerinde hatalara yol açtı. Aslında yapmamız gereken şey çok basit; sadece MySQL bağlantı ve fonksiyonlarını PDO ya da MySQL_li ile değiştirmek. Tabiki biraz yorucu ve uzun zaman alacaktır ama verdiğiniz emeklerin boşa gitmesini de engelleyecektir.

Burada PDO ile veritabanına nasıl bağlanırız onu göreceğiz:

PHP taglarımızı açtıktan sonra try cache yapımızı oluşturuyoruz:
PHP Kod:
<?php 
try{

}
cache(){

}
?>


Bu sayede veritabanı bağlantımızda açık sorunlarını PDO kendisi halletmiş olacak...

Değişkenlerimizi tanımlayarak devam edelim:

PHP Kod:
<?php 
try{

$host "localhost"//sunucu İP - Genellikle "localhost" olarak kullanılır
$user "root"// Veritabanı kullanıcı adınız - localhost yazılımlarında varsayılan olarak root kullanılır
$pass ""// Veritabanı parolanız. Localhost yazılımlarında genellikle boş olur
$veritabani "test" // cpanelden tablolarınızı saklamak için oluşturduğunuz veritabanı adınız

}cache(){

}
?>

Değişkenlerimizi tanımladıktan sonra yaavş yavaş bağlantı komutlarımızı girmeye başlıyoruz.

DİKKAT: Bu kısım, MySQL_li fonsiyonlarında tıpkı MySQL gibidir fakat PDO da çok az da olsa farklarla karşılaşıyoruz.

PHP Kod:
<?php 
try{

$host "localhost"//sunucu İP - Genellikle "localhost" olarak kullanılır
$user "root"// Veritabanı kullanıcı adınız - localhost yazılımlarında varsayılan olarak root kullanılır
$pass ""// Veritabanı parolanız. Localhost yazılımlarında genellikle boş olur
$veritabani "test" // cpanelden tablolarınızı saklamak için oluşturduğunuz veritabanı adınız

$db = new PDO("mysql:host=$host;dbname=$veritabani""$user""$pass");

}
cache(){

}
?>

Böylelikle "new PDO()" fonksiyonu ile yenir bir PDO Veritabanı Bağlantısı oluşturarak bunu "$db" değişkenine aktardık. 
DİKKAT: PDO de değişken kullanırken bazen hata verebilir. Eğer hata alırsanız değişkenlerinizi süslü parantez içerisine alınız.

ÖRNEK:
Kod:
{$host}
{$user}
{$pass}
{$veritabani}

Devam edelim. Veritabanı bağlantımız başarılı bir şekilde bağlantı, şimdi ise hata ayıklayalım. Bu sayede açık sorunları bir seviye daha düzelirken aldığımız hatalar daha açıklayacı olacaktır.
PHP Kod:
<?php 
try{

$host "localhost"//sunucu İP - Genellikle "localhost" olarak kullanılır
$user "root"// Veritabanı kullanıcı adınız - localhost yazılımlarında varsayılan olarak root kullanılır
$pass ""// Veritabanı parolanız. Localhost yazılımlarında genellikle boş olur
$veritabani "test" // cpanelden tablolarınızı saklamak için oluşturduğunuz veritabanı adınız

$db = new PDO("mysql:host=$host;dbname=$veritabani""$user""$pass");

}
cache PDOException $e ){
 
 print $e->getMessage();
}
?>

Son olarak eklediğimiz fonksiyonu tanıyalım:
"PDOException" fonksiyonunu "$e" değişkenine aktardık. Daha sonra "print" fonksiyonuyla yazıyı ekrana bastırdık. Bastırdığımız yazının içerisini ise "getMessage()" fonksiyonu ile "$e" değişkenine yükleyerek hatamızın ne olduğunu anlmamız sağlandı. 
Bu işlem sırasında karşılaşacağınız hataların %90'ı yanlış bilgileri girmekten kaynaklanır ama yine de kontrol etmekte fayda olacaktır.
Böylelikle bir bağlantı sayfası oluşturabildik. Şimdi bu sayfayı "config.php" adıyla kaydediyoruz. Hangi isimde kaydettiğiniz size kalmış, bu sadece dosyayı çağırırken işe yarayacaktır.
Bağlantımız başarılı bir şekilde kuruldu fakat hala bağlanamıyoruz. Yani veritabanı fonksiyonlarımız bir türlü çalışmıyor. Neden? Çünkü henüz dosyamızı çağırmadık. Şuanki bağlantı sadece "config.php" için geçerli. Bu bağlantıyı kullanabilmek için her sayfada yeniden yazmamız ya da sayfaya çağırmamız gerekiyor. Bunu da basit bir fonsiyon ile yapacağız.
Kod:
include 'dizin yolu/dosya adı';

"include" fonksiyonumuz bu iş için birebir. Fark ettiğiniz gibi bu fonksiyonu kullanırken diğer fonksiyonlar gibi parantez () yerine tırnak işareti kullandık. Eğer parantezlerle kullanmaya çalışsaydık fonksiyon çalışmayacaktı.
Bizim dosyamız kullanacağımız dosyalarla aynı dizinde olduğu için direk adıyla çağırabiliriz:
Kod:
include 'config.php';

Eğer dosyamız kullanacağımız dosyadan farklı bir dizinde olsaydı dizin yolu belirtmemiz gerekecekti. 
ÖRNEK:


Kod:
>db
 - config.php
>img
>index.php

Gördüğünüz örnekte ana dizinde iki klasör ve bir dosyamız mevcut.  Unutmayın, eğer elle değişiklik yapılmamışsa web sitesine bağlanıldığında otomatik olarak "index.html" dosyası gösterilir. Eğer yoksa "index.php" dosyası devreye girer. 
Config dosyamız db adlı klasörün içinde olduğu için index.php dosyamızda herhangi bir bağlantı yok. Bunun için dizin yolunu belirtmemiz gerekecek:
Kod:
include 'db/config.php';

Bu fonksiyonla artık index.php sayfamızda da bağlantı mevcut ve kullanılabilir bir durumda.
Eğer config dosyamız kullanacağımız dizinden önceki bir konumdaysa da şu şekilde kullanacağız:
Kod:
include '../config.php';


Dizin yolu belirtirken slash ( / ) işaretinden önce iki nokta koymak, bir üst dizine girmemizi sağlar. Eğer tek nokta koysaktık olduğu dizinde aramasını söylemiş olacaktık (Çoğu zaman gerekmez ama bazı hostinglerde belirtmek gerekebiliyor).

ÖRNEK:
Kod:
>db
  -config.php
>inc
  - islem.php
>index.php

Gördüğünüz gibi, "islem.php", "inc" klasörünün içinde. Config dosyamız ise, "inc" klasörü ile aynı dizinde olan "db" klasörünün içinde. Bu durumda fonsiyona şu komutları vereceğiz:

"Bir üst dizine çık / Klasörü seç / Dosyayı çağır"
Kod:
include '../db/config.php';

Evet artık "islem.php" sayfamızda da bağlantı kurabiliyoruz.
PDO ile veritabanı bağlantısı bu kadar basit. İyi kullanımlar
"Bilge Tonyukuk, ben özüm Tabgaç ilinde kılındım. Türk budun Tabgaçka körür erdi"

"Bilge Tonyukuk, ben kendim Çin ilinde kılındım. Türk ulusu Çin'e uymuş idi" ... Orhun Anıtları, Tonyukuk Bengütaşı, Birinci Taş, Batı yüzü.
  Cevapla


Hızlı Menü:


Konuyu Okuyanlar: 1 Ziyaretçi