php ile mysql veritabanına bağlantı için önceden mysql_connect, mysql_query gibi fonksiyonlar kullanılmakta idi.
fakat bazı güvenlik sorunlarından dolayı bu fonksiyonlar önce kullanımdan kaldırılacak olarak işaretlendi, php 7 ile birlikte de tamamen kaldırıldı. php.net tarafından bunların yerine PDO yada MySQLi tavsiye edilmektedir.
biz bu yazımızda sizlere PDO dan bahsedeceğiz.
PDO nedir?
PDO (PHP Data Objects) php ile birlikte gelen ve veritabanı işlemlerini nesne yönelimli olarak yapmamızı sağlayan bir sınıftır.
PDO bazı güvenlik risklerine (sql injection) karşı hazırlanmış sorgular (prepare) sayesinde doğal bir koruma sağlamakta ve mysql dışındaki veritabanlarına da (PostgreSQL, SQLite vb..) bağlanılabilmektedir. Yani yarın öbür gün veritabanınızı değiştirmek isterseniz kodlarınızın büyük kısmını değiştirmeden devam edebilirsiniz.
pdo ile MySQL sunucusuna bağlanabilmek için öncelikle host(sunucu), dbname(bağlanılacak olan veritabanı adı), veritabanı kullanıcı adı ve veritabanı şifresi gereklidir.
Eğer localhost üzerinde xampp kullanıyorsanız kullanıcı adı genelde root, şifre ise boştur. (xampp kurulumunu bilmiyorsanız buradaki yazıma bakabilirsiniz.)
gerekli olan kodlarımız aşağıdaki gibidir.
<?php
try {
$server = 'mysql:host=localhost; dbname=adresdefteri';
$user = 'root';
$pass = '';
$pdo = new PDO( $server, $user, $pass ); // pdo sınıfından bir nesne oluşturuyoruz. oluştururken bağlantı bilgilerimizi giriyoruz.
$pdo->exec('set names utf8');
} catch ( PDOException $hata ){ // pdo da oluşan hatayı $hata değişkenine alıyoruz.
echo "Bağlantı hatası..";
echo $hata->getMessage(); // oluşan hatayı ekrana yazıyoruz.
exit();
}
kodların açıklamasını yapacak olursak,
$server değişkenine sunucu tipini (mysql), sunucu adresini ve veritabanı adını yazıyoruz. $user ve $pass değişkenlerine ise kullanıcı adı ve şifremizi yazıyoruz.
new PDO diyerek bu bilgiler ile PDO sınıfından bir nesne oluşturuyoruz. Eğer bilgiler doğru ise bağlantı kurulmuş oluyor ve artık tüm veritabanı işlemlerimizi $pdo değişkeni üzerinden yapacağız.
set names utf8 satırı ise türkçe karakterlerin (ş, ğ, ı vb..) bozuk görünmemesi için kullanılır.
Peki bu try catch ne işe yarıyor? Bağlantı sırasında şifre yanlış olabilir, veritabanı adı yanlış olabilir yada sunucu kapalı olabilir. Bu durumda PDO bir hata fırlatır ve biz bu hatayı catch bloğunda yakalayıp ekrana yazıyoruz. try catch yapısını daha detaylı öğrenmek için buradaki yazıma göz atabilirsiniz.
Bağlantı kurulduktan sonra basit bir sorgu ile test etmek isterseniz,
$sorgu = $pdo->query("select * from kisiler");
foreach ($sorgu as $satir) {
echo $satir['ad'] ."<br>";
}
Not: canlı sitede getMessage() ile hatayı ekrana yazmak yerine log dosyasına yazmanızı tavsiye ederim, çünkü hata mesajında sunucu bilgileriniz görünebilir.
Henüz Yorum Yapılmamış. İlk Yorumu Siz Yapın!