PHP'de ODBC ile MSSQL Bağlantısı ve Kullanımı
Dec 17,2008 00:00 by canawar

Method


MSSQL'e bağlanıp işlem yapabilmek için php'de kullanabileceğimiz 2 farklı teknik var. İlki mysql kütüphanesine çok benzeyen mssql kütüphanesi, diğeri ise ODBC kullanarak. mssql kütüphanesi ile mysql kütüphanesi arasında hiçbir fark yok, sadece mysql yerine mssql yazıp bütün işlerinizi yapıyorsunuz. Diğer teknik ise ODBC kullanarak bağlanmak.

Neden ODBC?


Çünkü odbc Microsoft'un kendi bağlantı protokoludür. Sunucu üzerinde kurulan küçük bir program ile mssql sunucunuza odbc üzerinden rahatlıkla erişebiliriz. PHP'de mssql'in kendi kütüphanesindense bu kütüphaneyi kullanmanızı öneririm. Bazı veritabanlarında Türkçe tablo adları, alan adları kullanılabiliyor. Bu tarz veritabanlarında php'deki mssql kütüphanesi sorun çıkarıyor malesef. ODBC kullanarak kolayca bu problemleri aşabiliriz.

Neler Gerek?


PHP'de Windows sunucuda odbc kütüphanesi için herhangi bir ekstra extension kurulu olması gerekmiyor, ancak *nix tabanlı (unix, linux, macos) sunucularda ise http://www.unixodbc.org/, http://www.minisoft.com/pages/middleware/ODBC_UNIX/odbc32_UNIX.html sayfalarına bakılması gerekebilir. Açıkcası linux sunucu üzerinde çalıştırmayı denemedim, tavsiye de etmem. MySQL, PostgreSQL gibi açık kaynak kodlu, mssql'e 100bin basacak veritabanı uygulamaları varken mssql kullanmak biraz saçma geliyor insana. :)

Nasıl Olacak Bu İş?


Şimdi mysql'deki bağlantı yapısına yakın bir yapı kullanacağız.

  1. $baglanti = odbc_connect('DRIVER={SQL Server};SERVER=host;DATABASE=veritabani','kadi','sifre');

$baglanti değişkenine $baglanti = mysql_connect'de atadağımız gibi bir bağlantı kaynağı atıyoruz. Ancak bu fonksiyonda CONN String olarak tanımlanan cümlecik ile veritabanını doğrudan bildiriyoruz. Geriye SQL'leri işletmek kalıyor.

  1. // sorguyu isletelim
  2. $sorgu = odbc_exec($baglanti,"select * from tablo");
  3.  
  4. // verileri alip isleyelim
  5. while( $bilgi = odbc_fetch_array($sorgu) ){
  6.   print_r($bilgi);
  7. }

İşte bu kadar kolay. Genel olarak fonksiyonlar aynı, başına mysql yerine odbc geliyor o kadar. Sorguarımızı ise odbc_exec($baglanti_degiskeni,"sorgu"); şeklinde veriyoruz. Geri kalan kısımları mysql'de bildiğiniz tekniklerle halledebiliyoruz. ODBC fonksiyonları bazı fonksiyonlarda aynı bazılarında da oldukça farklı.