Aylık arşivler: Ocak 2008

mysqli_connect() Fonksiyonu

Published / by Uğur Özşahin / Leave a Comment

    PHP üzerinde uğraştığım ve en çok sorun yaşadığım konulardan biri veritabanlarıdır. Sonuçta bir çok projemin temelinde öyle yada böyle bir şekilde veritabanları söz konusudur. Özellikle PHP söz konusu olduğunda, bu veritabanı meselesi daha çok ön plana çıkmaya başladı. Bildiğiniz gibi günümüzde PHP ile birlikte en çok kullanılan veritabanlarından biri MySQL. Doğal olarak benimde daha çok üzerinde durduğum veritabanlarını oluşturuyorlar. Maalesef her geçen gün bu konuda yeni bir şey öğrenmek ile birlikte, bazı takıldığım noktalarda olmuyor değil.

    Bir arkadaşımdan öğrendiğim bir hazır scripti, kendi serverımda denemek isterken scriptin kurulumu sırasında, veritabanı ile iletişim kurmak için girdiğim ve doğruluğundan tamamen emin olduğum veritabanına erişim bilgilerine rağmen bir problem ile karşılaştım. Daha sonra kurulum dosyasının kodlarını incelediğimde, veritabanı bağlantısı  için mysql_connect() fonksiyonu yerine mysqli kütüphanesinden yararlanılabilmesi için kullanılan mysqli_connection() fonksiyonuna rastladım. Zaten aldığım hatada veritabanı ile bağlantı kurulamadığı yönündeydi. Dolayısı ile tekrar yaptığım incelemelerimde her verinin doğru girilmesine karşın, karşılaştığım sorunun mysqli_connection() fonksiyonunun kullanımı ile ilgili olduğu sonucuna vardım. Yani kısaca mysql_connection() fonksiyonun aldığı parametreler ile mysqli_connection() fonksiyonunun aldığı parametrelerin birbirlerinden bariz farklılıklar barındırdığını anladım.

mysqli_connection();

    mysql_connection() ve mysqli_connection() parametrelerini kısaca açıklayacak olursak;

mysql_connection(server, username, password, new_link, client_flags)


server parametresi: mysql server adresi ve portu
username parametresi: mysql server için kullanıcı adı
password parametresi: mysql server için şifre
new_link ve client_flags parametreleri bizi şimdilik ilgilendirmeyen ve default değerlere sahip parametreler.

mysqli_connection(host, username, passwd, dbname, port, socket)


host parametresi: mysql server
username parametresi: mysql server için kullanıcı adı
passwd parametresi: mysql server için şifre
dbname parametresi: mysql veritabanın adı
port parametresi: mysql server’a ait iletişim port numarası
socket parametresi default değere sahip benimde hakkında pek bilgi sahibi olmadığım başka bir parametre.

    Şimdi diyebilirsiniz, zaten en başta bu iki fonksiyonun aldığı parametrelerin sayıları farklı. Ancak şunu belirtmeliyim bu parametrelerin sayıları farklı olduğu gibi, aynı işleve sahip olması beklenen parametrelerin kullanımında da önemli farklar ortaya çıkmakta. Örnek olarak ben mysql_connection() fonksiyonunda kullanılan server parametresi ile mysqi_connection() fonksyionunda kullanılan host parametresinin aynı olmasını beklerken, ne kadar büyük bir yanılgı içinde olduğumun farkına vardım. Zaten en başta yaşadığım problemin temelinde bu farklılık baş göstermekteydi. Aşağıya örnek olarak iki bağlantı kodu yazacağım:

mysql_connection("localhost:3306","root","xxxx");
fonksiyonu çalışırken

mysqli_connection("localhost:3306","root","xxxx","veritabani");
fonksiyonunun çalışmadığına şahit olacaksınız. Bir önceki paragrafta belirttiğim gibi bunun nedeni ilk parametrenin kullanımının önemli bir şekilde farklı olması. Parametrelerden bahsettiğimde de anlaşılmış olduğunu düşündüğüm bu fark Port parametresinden ileri gelmekte. O parametreyi oraya boşuna sıkıştırmamışlar değil mi? 😉 Fonksiyonun doğru kullanımına örnek verecek olursak;

mysqli_connection("localhost","root","xxxx","veritabani",3306); olmalı.



    İşte yeni öğrenmiş olduğum fonksiyon ile birlikte basit ancak, önemli olduğuna inandığım sorunun çözümü. PHP de fonksiyonlara ait parametre ve diğer bilgilere çabuk ulaşmak istiyorsanız browserınızın (ie, firefox)  adres satırına http://tr2.php.net/ ile birlikte fonksiyonunuzu yazmanız yeterli olacaktır.

Örnek: strtr(); fonksiyonu için http://tr2.php.net/strtr