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(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