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.
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.
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.
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
Umarım az da olsa faydalı olabilmişimdir...
Kolay gelsin....
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....