|
|
PHP-MySQL ilişkisi
PHP programlarında veritabanından yararlanabilmek için programın önce web sunucusu aracılığıyla veritabanı dosyası ile bağlantı kurması gerekir. Başka bir deyişle, PHP programının veri ile arasında bir yol açması gerekir. MySQL açısından ise bu bağlantı, veri sunucusunda yeni bir oturum açılması anlamına gelir. İki program arasındaki bu ilişkiyi PHP’nin mysql_connect() fonksiyonu yapar. Bu fonksiyonun alabileceği üç parametre vardır. Bunlar:
$veri_yolu = mysql_connect ("localhost" , "root" , "parola" );
Burada “localhost” yerine MySQL programının parçası olarak çalıştığı sunucunun adı yazılır. “root” bu MySQL sunucusunda açılacak oturumun kimin adına açılacağını belirtir. “root” kelimesi, sunucunun yönetici olarak oturum açacağı anlamına gelir. “parola” kelimesinin yerine de, MySQL'i kurarken belirlenen bir kullanıcı parolası varsa, o yazılır. Bu komutta yer alan $veri_yolu değişkeni, açılacak veri yolunun, PHP ile MySQL veritabanı sunucusu arasındaki bağın tanıtıcı işareti olacaktır. Bu bağlantı kurulduktan sonra, açılan veri yolundan gelecek bilgiler ve veritabanına gidecek bilgiler bu değişken aracılığıyla gerçekleşecektir. Veri sunucusu ile veri yolu bağlantısı kurulursa, bu değişken değer tutar hale gelir. Eğer bağlantı kurulamazsa, bu değişken boş kalır. mysql_connect() fonksiyonunun başarılı olup olmadığı bu değişkenin durumunun sınanmasıyla anlaşılır.
$veri_yolu =mysql_connect("Gokmen", "root");
if ( !$veri_yolu) die ("MySQL ile veri bağlantısı kurulamıyor!);
Burada veri sunucusunun bulunduğu web sunucusunun adı "Gokmen" ve oturum "root" yetkisiyle açılmıştır. İkinci satırdaki if deyimi, $veri_yolu değişkeninin değer içerip içermediğine bakar ve değişkende bir değer yoksa, bağlantı kurma girişini durdurarak ziyaretçiye hata mesajı gönderir.
Bağlantı başarıyla kurulduktan sonra PHP programı, bu yoldan veritabanı sunucusuna, hangi veritabanı dosyasından yararlanmak istediğini bildirmelidir. Hangi Veritabanı üzerinde işlem yapılacağı, mysql_select_db() fonksiyonu kullanılarak şu şekilde belirtilir:
mysql_select_db("veritabanı_adı",$veri_yolu) or die ("Veritabanı açılmadı".mysql_error ());
Bu fonksiyonun başarıyla icra edilip edilmediği fonksiyondan dönen değerin true (doğru) veya false (yanlış) olmasından anlaşılır. Bu değer false ise bu deyimin die() bölümü icra edilir ve tarayıcı penceresine veritabanının açılamadığı mesajıyla birlikte MySQL’in hata mesajı da gönderilir. PHP’nin MySQL veritabanını seçememesi çoğu zaman kullanıcı yetkilerinin internet ziyaretçilerini kapsayacak şekilde düzenlenmemiş olmasından kaynaklanır. Bu durum gerçek web sunucusunda ortaya çıkarsa, web sunucusu yönetimine başvurmak gerekir.
Yukarıda anlatılanlar bir örnek üzerinde incelenecek olursa;
<?php
$veri_yolu = mysql_connect("Gokmen", "root");
if ( ! $veri_yolu ) die ("MySQL ile veri bağlantısı kurulamıyor!");
mysql_select_db("veri" , $veri_yolu) or die ("Veritabanına ulaşılamıyor!".mysql_error() );
$sonuc = mysql_query("SELECT * FROM calisanlar",$veri_yolu);
printf("Adı: %s<br>\n", mysql_result($sonuc,0,"adi"));
printf("Soyadı: %s<br>\n", mysql_result($sonuc,0,"soyadi"));
printf("Adresi: %s<br>\n", mysql_result($sonuc,0,"adres"));
printf("Görevi: %s<br>\n", mysql_result($sonuc,0,"pozisyon"));
?>
Burada, mysql_connect() fonksiyonu ile “Gokmen” isimli sunucuda root adına MySQL sunucu ile bağ kurduktan sonra mysql_select_db() fonksiyonu ile bu bağı kullanarak “veri” isimli veritabanının kullanılacağı bildiriliyor. Daha sonra mysql_query() fonksiyonu ile bu veritabanındaki “calisanlar” isimli tablodaki bütün kayıtlar seçilip, bu seçilen kayıtlar $sonuc dizi-değişkeninde toplanır. $sonuc değişkenin değerlerini görüntülemek için PHP’nin özel bir fonksiyonu olan mysql_result() fonksiyonu kullanılır. mysql_query() fonksiyonu, PHP’nin SQL dilini kullanarak veritabanı işlemleri yapmasını sağlayan başlıca araçtır .
PHP’de kullanılabilecek MySQL komutları ve genel özellikleri:
mysql_affected_rows: Bir önceki işlemde etkilenen satır sayısını verir.
mysql_close: Belirtilen MySQL bağlantısını kapatır.
mysql_connect: Sunucuya veritabanı bağlantısı açar.
mysql_create_db: MySQL’de veritabanı açar.
mysql_data_seek: Sonuç satırında belirtilen sıraya geçer.
mysql_db_query: MySQL’e sorgu gönderir.
mysql_drop_db: Sunucudan veritabanı siler.
mysql_errno: Bir önceki işlemdeki MySQL hata numarasını verir.
mysql_error: Bir önceki işlemdeki MySQL hata mesajını verir.
mysql_fetch_array: Sonuçları dizi değişkeni olarak alır.
mysql_fetch_field: Sonuç tablosundaki alan adını obje olarak alır.
mysql_fetch_lengths: Sonuç tablosundaki dizi değişkenin uzunluğunu alır.
mysql_fetch_object: Sonuç satırını obje olarak alır.
mysql_fetch_row: Sonuç tablosundan dizi değişkeni alır.
mysql_field_name: Sonuç tablosundaki sonucun tablodaki alan adını verir.
mysql_field_seek: Sonuç tablosunda sıra indisini belirtilen yere götürür.
mysql_field_table: Alan adı verilen sonucun tablo adını verir.
mysql_field_type: Sonuçtaki alanın hangi tip olduğunu belirtir.
mysql_field_flags: Sonuçtaki alanın hangi parametrelerle tanımlandığını belirtir.
mysql_field_len: Sonuçtaki alanın veritabanındaki uzunluğunu verir.
mysql_free_result: Sonuçlar için atanan hafızayı boşaltır.
mysql_insert_id: Bir önceki veri yerleştirmede oluşan otomatik veri değerini verir.
mysql_list_fields: Sonuçtaki tüm tablo alanlarını listeler.
mysql_list_dbs: Sunucudaki tüm veritabanlarını listeler.
mysql_list_tables: Veritabanındaki tüm tabloları listeler.
mysql_num_fields: Sonuçtaki alan sayısını verir.
mysql_num_rows: Sonuçtaki satır sayısını verir.
mysql_pconnect: Sunucuya kalıcı bir bağlantı tanımlar.
mysql_query: Veritabanına sorgu gönderir.
mysql_result: Sorgudan dönen sonuçları alır.
mysql_select_db: Sunucudan veritabanı seçer.
mysql_tablename: Verilen alanın ait olduğu tablo adını verir.
SanalPusula.Net