Bu bölümde PHP ile veritabanları arasındaki ilişkiye yönelik sıkça sorulan sorulara yer verilmiştir. Evet, PHP, günümüzde kullanılabilen her veritabanına sanal olarak erişebilmektedir.
Windows makinelerde dahili ODBC desteğini, doğru ODBC sürücüsüyle kullanabilirsiniz.
Unix makinelerde, protokol uyumluluğu (en azından oldukça uyumlu) sayesinde Microsoft SQL Sunucusuna erişmek için Sybase-CT sürücüsünü kullanabilirsiniz. Sybase, » Linux sistemler için gerekli kütüphanelerin özgür sürümlerine sahiptir. Diğer Unix işletim sistemlerinin kullanıcılarının doğru kütüphaneleri temin etmek için Sybase'e başvurmaları gerekmektedir. Ayrıca, sonraki soruya da bakınız.
Evet. Tamamen Windows 9x/Me, veya NT/2000 üzerindeyseniz zaten gerekli bütün araçlara sahipsinizdir; ODBC ve Microsoft'un ODBC sürücülerini Microsoft Access veritabanları için kullanabilirsiniz.
Bir Unix üzerindeyseniz ve bir Windows makinedeki bir Microsoft Access veritabanına erişmek istiyorsanız Unix ODBC sürücüleri kullanmanız gerekir. » OpenLink Software, bunu yapabilen Unix temelli ODBC sürücülerine sahiptir.
Diğer bir seçenek, Windows ODBC sürücülerine sahip bir SQL sunucusu kullanmaktır. Böylece Microsoft Access (ODBC kullanarak) ve PHP'ye (yerleşik sürücüleri kullanarak) erişebilirsiniz. Başka bir seçenek ise, Microsoft Access ve PHP'nin her ikisinin de anlayabileceği düz dosyalar veya dBase veritabanları gibi bir aracı dosya biçimlerini kullanmaktır. Bu noktada OpenLink yazılımdan Tim Hayes'in yazdıklarını okuyalım:
Veritabanınıza PHP'den ODBC'yle (yani, OpenLink'in sürücüleriyle) doğrudan erişmek varken aracı dosya olarak başka bir veritabanını kullanmak hiç iyi bir fikir değildir. Mutlaka bir aracı dosya kullanmanız gerekmiyorsa, OpenLink'in NT, Linux ve diğer Unix platformları için dağıttığı Virtuoso'yu (sanal veritabanı motoru) kullanabilirsiniz. Yazılımı özgürce indirmek için » OpenLink'i ziyaret ediniz.
Başarısı kanıtlanmış tek seçenek Windows üzerinde MySQL ile MyODBC sürücülerini kullanmak ve veritabanlarını eşzamanlamaktır. Steve Lawrence şunları yazmıştır:
İpuçları:
PHP'de MySQL desteği şu veya bu şekilde daima olacaktır. PHP 5'te farklı olan tek şey, istemci kütüphanesinin PHP ile birlikte dağıtılmamasıdır. Bunun çeşitli sebepleri var:
Bu günlerde çoğu sistemde istemci kütüphanesi zaten kurulu geliyor.
Yukarıda bahsedildiği gibi, bir kütüphanenin bir çok sürümüne sahip olmak bazı karışıklıklara sebep olabilir. Örneğin, mod_auth_mysql'i PHP sizinkinden farklı bir sürümle ilintileyebilir; Apache içinde ikisinin birden etkin olması kaçınılmaz olarak bir çökme ile sonuçlanır. Ayrıca, PHP ile dağıtılan istemcinin sürümü sunucu ile tam uyumlu olmayabilir. Bunun en belirgin belirtisi Unix soket dosyası mysql.socket üzerinde bir anlaşmazlık oluşmasıdır.
Bakım işleri gevşetilmişti ve yazılım zaman içinde mevcut sürümün gerisine düşmüştü.
Kütüphanenin gelecek sürümleri GPL altında olacaktır. Bir GPL'li kütüphaneyi bir BSD/Apache tarzı lisanslı bir proje ile birlikte paketleyemezdik. Bunu bir noktada durdurmak için PHP 5 iyi bir seçimdi.
Bu aslında pek çok kişiyi etkilemeyecektir. Unix kullanıcıları, en azından ne yapacaklarını bilen kişilerdir. PHP'yi derlerken, sistemde kurulu libmysqlclient kütüphanesini --with-mysql=/usr yapılandırma seçeneği ile belirtmeleri yeterli olacaktır. Windows kullanıcıları php.ini içinde php_mysql.dll eklentisini etkin kılabilirler. Kurulum talimatları hakkında daha ayrıntılı bilgi için MySQL Başvuru Kılavuzuna bakınız. Ayrıca, libmysql.dll dosyası da sistem PATH'ından erişilebilir olmalıdır. Daha ayrıntılı bilgi için Windows sistem PATH'ının ayarlanması ile ilgili SSS'yi okuyun. libmysql.dll (ve PHP ile ilgili diğer dosyalar) PHP dizininde bulunduğundan, bu dizinin sistem PATH'ına eklenmesi gerekebilir.
0 değerli bir sonuç belirtecini kullanmaya çalışıyorsunuzdur. Buradaki sıfır, sorgunuzun bir şekilde başarısız olduğu anlamına gelir. Dönen sonuç belirtecini kullanmaya çalışmadan önce, sorguyu gönderdikten sonra oluşan hataları incelemeniz gerekir. Bunun gerektiği gibi yapıldığı bir kod şöyle olurdu:
<?php
$result = mysql_query("SELECT * FROM tables_priv");
if (!$result) {
echo mysql_error();
exit;
}
?>
<?php
$result = mysql_query("SELECT * FROM tables_priv")
or die("Kötü sorgu: " . mysql_error());
?>