8 Ekim 2013

PHP ile MSSQL veritabanı bağlantısı oluşturmak

PHP 5.2 ve öncesinde MSSQL veritabanlarına bağlanabilmek için 'mssql' kütüphanesini kullanılır.

PHP 5.3 ve sonrasında Microsoft tarafından yayınlanan 'sqlsrv' kütüphanesi kullanılmaya başlandı. Bununla ilgili bilgiyi de en kısa zamanda anlatacağım. (Anlattım :d http://www.kodyazma.com/2013/10/sqlsrv-ile-php-uzerinden-mssql-baglantisi.html )

Öncelikle php kurulduğunda çoğu kütüphane pasiftir. Bunları etkin hale getirebilmemiz için php.ini dosyasında değişiklikler yapmamız gerekir.
(php.ini dosyası PHP klasörünün altındadır. Mesela wamp xamp gibi programlar ile kurduysanız, C:/wamp/php gibi, ya da Program Files içerisindedir)

mssql kütüphanesini etkin hale getirebilmemiz için php.ini dosyasındaki alttaki satırı bulup en başındaki ';' (noktalıvirgülü) kaldırmamız gerek.

;extension=php_mssql.dll


Yani ne yapmış oluruz, php_mssql.dll kütüphanesini kullan demiş oluruz. Bu kütüphanenin yerini merak edenler olursa yine php.ini dosyası içerisindeki 'extension_dir' satırına bakabilirler. Bende 'extensions' klasörü içerisindeymiş, bir başkasında 'ext' klasörü olabilir.... Yani buradaki kütüphanelerin bulunduğu adresi de değiştirebilirsiniz.

extension_dir = "C:\Program Files (x86)\PHPx.x\extensions"

Eğer bu klasör içerisinde 'php_mssql.dll' adında bir dosya bulunamazsa hata alırsınız.

Tabi php.ini dosyasındaki değişikliklerin faal hale gelebilmesi için kullandığımız servisleri(apache, iis vs) yeniden başlatmamız gerek. Eğer wamp xamp gibi araçlar kullanıyorsanız, kapatıp açabilirsiniz, ya da yeniden başlat gibi seçenekler vardır :) Eğer IIS kullanıyorsanız çalıştır'a(Windows + R ile açabilirsiniz) 'inetmgr' yazıp açtığınızda IIS Manager açılır, oradan yeniden bşlatmanız gerek. Tabi IIS de php kullanmak için de ayarlar yapmak gerek, onu da bir sonraki yazımda detaylı anlatayım. (Anlattım :d http://www.kodyazma.com/2013/10/iis-windows-server-uzerinde-php.html)

Yukarıdaki işlemleri yaptıysak, sunucumuz da yeniden başlattıysak, geçelim veritabanına bağlanma işlemine. Alında bu kısım çok basit :) Şöyle bir DBO sınıfı oluşturalım.

<?php
    class DBO   
    {
        // Veritabani baglantisi icin gerekli veriler
        // Server
        private $server = "127.0.0.1";

        // Veritabani ismi
        private $db_name = "dbUser";

        // Sifre
        private $password = "*****";

        // Kullanici Adi
        private $username = "kodyazma.com";

        // Server connection nesnesi
        private $conn;

        // Serverda baglanilan database nesnesi
        private $database;

        // MsSql(veritabani) baglantisi kurulur
        function Connect()      
        { 
            // Server baglantisi kurulur basarili olmazsa hata verilir
            $this->conn = mssql_connect($this->server, $this->username, $this->password)
                or die("Couldn't connect to SQL Server on " . $this->server);

            // Serverdaki veritabani secilir
            $this->database = mssql_select_db($this->db_name, $this->conn)
                or die("Couldn't open database " . $this->db_name);
        }

        // Gelen sql query calistirip geri dondurur
        function RunSql($sqlQuery)
        {
              return mssql_query($sqlQuery);
        }
    }
?>

Yukarıdaki sınıfa göz attığınızda, sanırım ne kadar basit olduğunu farkettiniz. Bunu sınıfı dbo.class.php olarak kaydedip istediğiniz yerden çağırabilirsiniz. Eee tabi bu çok basit bir sınıf oldu, zamanla ihtiyaçlarınıza uygun bir dbo sınıfı oluşacaktır.

test.php adında bir dosya oluşturup dbo sınıfı yardımıyla, veritabanından birkaç satır çekip yazdırmak istersek

<?php
    // Veritabani sinifini iceren dosya eklenir
    require_once('dbo.class.php');

    // Veritabani objesi olusturulur
    $DBO = new DBO();

    // Veritabani baglantisini kurulur
    $DBO->Connect();

    // Menuyu cekmek icin sorgu olusturulur
    $query = "SELECT * FROM tablo_ismi";
    
    // Sorgu calistirilir
    $query_results = $DBO->RunSql($query)
        or die('Error in $query_menu. Error code :' . mssql_get_last_message() );

    // Her bir menu item icin menu isimleri ve id leri cekilir
    while( $results = mssql_fetch_assoc($query_menu_results) )
    { 
        echo $results['id'];
    }

?>

Umarım az da olsa faydalı olabilmişimdir...
Kolay gelsin....


Bu Blogda Ara

İletişim

Ad

E-posta *

Mesaj *