PHP ile Oracle Bağlantısı

PHP kullananlar Veri tabanı yönetim sistemi olarak genellikle MySQL kullanırlar. Fakat MySQL dışında bir VTYS kullanmanız gereken durumlar da olacaktır. Hikaye kısmını çok uzatmadan, bu yazıda Windows ortamında PHP kullanarak Oracle veri tabanına nasıl bağlanabileceğinizi bulabilirsiniz.

1) Web arayüzü kullanan bir uygulama yapmak söz konusuysa, PHP – Oracle bağlantısını yapmak için öncelikle bir Apache server gerekir. Xampp veya Wamp gibi paket programlar ile gelen Apache’yi kullanabilirsiniz.

2) Apache server’ı edindiyseniz sırada php.ini dosyasından gerekli OCI desteğini sağlayın.

;extension=php_oci8.dll      ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll  ; Use with Oracle 11gR2 Instant Client

Apache’yi kurduğunuz yere giderek php.ini dosyasını aratın ve açın. Yukarıdaki satırları bularak aşağıdaki hale getirin. Noktalı virgülleri kaldırın.

extension=php_oci8.dll      ; Use with Oracle 10gR2 Instant Client
extension=php_oci8_11g.dll  ; Use with Oracle 11gR2 Instant Client

Oracle 10g veya 11g kullanımınıza göre istediğinizi aktifleştirin. Ne olur ne olmaz diyorsanız ikisini de aktifleştirebilirsiniz.

3) Bağlantıyı sağlamak için Oracle Instant Client ile beraber gelen kütüphane dosyalarına ihtiyacınız var.

Sisteminize göre 32 veya 64 bit olanı indirin. Fakat özellikle dikkat etmeniz gereken nokta, Apache kurmak için kullandığınız paket programın kaç bit olduğudur.

Eğer Xampp kullanıyorsanız 32 bit olan instant client’ı indirmeniz gerekiyor. Çünkü Xampp’ın 64 bit versiyonu gördüğüm kadarıyla şu an piyasada yok. Sırf bu uyumsuzluk yüzünde fazlasıyla zamanınızı harcayabilirsiniz.

Instant client ile Apache’nin aynı bit olmasına özen gösterin.

Dosyaları indirdikten sonra istediğiniz bir yere çıkartabilirsiniz. Fakat bu yeri bir yere kaydedin, bir sonraki adımda ihtiyacınız olacak. Ben Windows/System32 klasörüne çıkartmıştım.

4) “control panel / system / advenced system settings” yolunu izleyerek “environment variables” penceresini açın. “system variables” ekranında “Path” değişkenini seçerek, sonuna gidin ve instant client dosyasının yerini yazın/gösterin.

;C:\Windows\System32\instantclient_12_1

Bu Path değişkenin içinde farklı programlar için yollar mevcut. Her biri ; ile ayrılmaktadır.

5) Herşey tamamsa Apache’yi yeniden başlatabilirsiniz. Eğer hala oci fonksiyonlarını kullanamıyorsanız bilgisayarınızı yeniden başlatın. 4. adımda yaptığımız değişiklik aktif olmamış olabilir.

Tüm bu işlerin amacı PHP’ye OCI desteğini kazandırabilmekti. Opsiyonel olarak herhangi bir php dosyasına <?php php_info(); ?> yazarak OCI desteğini açıp açmadığınızı test edebilirsiniz.

Bu aşamadan sonra yapcağınız işlemleri OCI fonksiyonları ile yapmalısınız. Bağlantınızı test etmek için aşağıdaki kodu kullanabilirsiniz.

$db = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=IP ADRESİNİZ)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)))";
if($c = OCILogon("KULLANICI ADINIZ", "ŞİFRENİZ", $db))
{
	echo "Bağlandı.";
}
else
{
	$err = OCIError();
	echo "Bağlanamadı. " . $err[text];
}
?>

CodeIgniter ile Oracle Bağlantısı

CodeIgniter kullanıyorsanız yukarıdaki adımlardan sonra, “application/config/database.php” dosyanızdaki değişkenleri aşağıdaki gibi değiştirebilirsiniz.

$active_group = 'default';
$active_record = TRUE;
$tnsname = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=IP ADRESİNİZ)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)))';
$db['default']['hostname'] = $tnsname;
$db['default']['username'] = 'KULLANICI ADINIZ';
$db['default']['password'] = 'ŞİFRENİZ';
$db['default']['database'] = '';
$db['default']['dbdriver'] = 'oci8';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

Bağlantıyı sağladıktan sonra OCI fonksiyonlarını kullanmak yerine Active Records‘u kullanabilirsiniz. Fakat yine de kullanırken dikkatli olun. Özellikle SQL cümlelerini elle yazmaya çalışın.

Örnek olması açısından şöyle bir örnek verebilirim :

/*
 * $this->db->select(*);
 * $this->db->from('USER_INFO');
 * $query = $this->db->get();
 * return $query->result();
 * 
 * Böyle kullanmak yerine aşağıdaki gibi kullanın.
 */
// Sorgu
$query = "SELECT * FROM USER_INFO";
// Çalıştır
$query = $this->db->query($query);
// Gönder
return $query->result();

Veya şöyle bir örnek de verebilirim :

// Sorgu
$query = "
	INSERT INTO USER_INFO (user_name, email, password, type) 
	VALUES ('{$user['user_name']}', '{$user['email']}', '{$user['password']}', '{$user['type']}')
";
// Çalıştır
$result = $this->db->query($query);

Genel olarak bahsedeceklerim bu kadardı. Bağlantıda sorun yaşayanlara yardımcı olabilirim. Yorum bölümününü kullanabilisiniz.

Benzer Yazılar

Yorumlar

  • Yaşar , 05 Ağustos 2013 - 12:00:02

    PHP’yi bu kadar araştırmama rağmen her uygulamada takıldığım bir nokra oluyor. Onu da araştırıyorum araştırıyorum bulamıyorum. Anlatım işime yaradı hocam, teşekkürler.

    Cevapla

Yorum Yazın

Su elementleri kullanabilirsiniz : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Arama
RSS
Beni yukari isinla