Bu sayfadaki yazılar
Sayfanın metni
Sayfa 55
Dönen değer bir dizidir. Eğer tablonun sonuna gelinmiş ve okunacak satır kalmamışsa "false" değer döndürür. Bu özellik sayesinde bir döngü ile tüm tabloyu ekrana yazdırmak oldukça basit hale gelmiştir.
mysql_fetch_array 2 parametre alır. İlk parametre mecburi, ikincisi opsiyoneldir.
* Tablo: mysql_query'den dönen tablo.
Sonuç
türü: Diziyi kolon isimleri, numerik indeks ya da her ikisiyle birlikte kullanabilmek mümkündür. Bu parametre MYSQL_ASSOC, MYSQL_NUM ya da MYSQL_BOTH sabitlerine eşitlenebilir. Eğer parametreyi kullanmazsak varsayılan değeri MYSQL_BOTH'dur.
Peki hem kolon ismi hem de numerik indeks kullanabilmenin avantajı nedir? Aşağıdaki örneklerde bu avantajı gözlemleyeceğiz.
Örnek 1: $sgl - "SELECT isim, soyad, sirket, telefon FROM rehber"; $tablo -— mysal guery($sdl); $satir mysgl fetch array($tablo); echo $satir(31; echo Örnek 2: $sgl - "SELECT telefon, isim, soyad, sirket FROM rehber"; $tablo -— mysal $satir mysgl fetch array($tablo);
echo $satir(31; echo
Tablonun ilk satırındaki değerlerin şu şekilde olduğunu varsayalım: isim: Ali soyad: Albayrak şirket: Plazma Ltd. Şti. telefon: +90 212 333 44 55
İlk örnekte tablonun ilk satırında 3 numaralı indekste yer alan değer ve "telefon" kolonuna ait değeri peş peşe yazdırmış oluyoruz. Satır indeksleri 0'dan başladığına göre 3 numaralı indeks yine telefon kolonuna denk gelir. Yani Örnek 1'in çıktısı şu şekilde olacaktır;
+90 212 333 44 55+90 212 333 44 55
İkinci örnekte ise 3 numaralı indeksteki telefon 0 numaralı indekse kaymış ve 3 numaralı indekste bu defa şirket yer almakta.
Ekrana çıktı veren kod ise aynı yani 3 numaralı indeks ve "telefon" kolonunu yazdırıyor. Bu durumda çıktı;
Plazma Ltd. Şti.+90 212 333 44 55 olarak değişecektir. Sonuç:
İndeks kullanımı özellikle kolonların ne oldukları çok önem teşkil etmediği ve bir loop ile tüm kolonların ekrana yazdırılacağı durumlarda doğru bir seçimdir. Ancak sabit bir tablo yapısından sabit kolon isimleriyle işlem yapacaksanız indeks yerine kolon isimlerini kullanarak yazacağınız programlarda kolon isimlerinin yer değiştirmesi gibi durumlar problem teşkil etmeyecektir.
mysql_num_rows()
Yukarıdaki örnekte kullanmamış olsak da mysql_num_rows da çok önemli bir mysql komutudur. Bu komut bize tablodaki toplam satır sayısını verir.
Dönen değer bir sayıdır. Bir problem çıkması halinde "false" değer döndürür.
num_rows tek (mecburi) parametre alır.
Tablo: mysql_query'den dönen tablo.
2. Yöntem - Sınıf Kullanımı
<?php // MySOL Baglanti Sinifi class MySOLBaglantisi 1 // Sinif Degiskenleri private $baglanti; private $sunucu; private $kullaniciAdi; private $sifre;
// Yapici Fonksiyon function — construct ($ sunucu,
(
$ kullaniciAdi,
// Sinifi Olustururken Ilk Degerleri Oku $this->sunucu $ sunucu; $this->kullaniciAdi - $ kullaniciAdi; $this->sifre — $ sifre;
)
// Baglan metodu public function Bağglan($veritabani 1 // MySOL'e Baglan
)
$this->baglanti mysgl connect ($this->sunucu, $this->kullaniciAdi, $this->sifre) or die("MySOL'e erisilemiyor"); mysgl select db($veritabani, $this->baglanti) or die("Veritabanina erisilemiyor"); return $this->baglanti;
#/ tablo sinifi class Tablo
(
// Sinif Degiskenleri
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 54
Yukarıdaki örnekte biz yalnızca ilk 3 parametreyi kullandık. Siz kendi test ortamınıza göre MySQL sunucusunun Host ya da IP'sini, yetkili kullanıcı ismini ve şifreyi değiştirmelisiniz. Eğer MySQL, PHP ile aynı bilgisayara kurulmuş ise mysql_connect'in ilk parametresi olarak localhost ya da IP'yi girebilirsiniz ("localhost" ya da "127.0.0.1"). MySQL başka bir bilgisayarda kurulu ise o bilgisayarın networkdeki ismi ya da IP'sini girmeniz gerekmektedir.
Kullanıcı adı/şifre ile ilgili karşılaşabileceğiniz en temel problem, MySQL sunucusunun PHP ile aynı bilgisayarda kurulu olmaması durumunda geçerli bir kullanıcı adı/şifre bilgisiyle bağlantı kurulamamasıdır. Büyük olasılıkla problem söz konusu kullanıcının yalnızca lokal yetkisinin oluşu, uzaktan bağlantılara izin vermeyişidir. Bu durumda MySQL üzerinde yetkili bir kullanıcı yaratmanız ve bu kullanıcıya uzaktan erişim için izin vermeniz gerekir. Bu işlem için PHPMyAdmin ya da MySQL'in kendi araçlarından birini kullanmanızı öneririm.
Bir diğer önemli nokta ise PHP ve MySQL versiyonlarınızın uyumluluğudur. Eğer PHP 5 kullanıyor ve çok eski bir MySQL sürümü kullanıyorsanız PHP'nin mysql eklentisi eski veritabanlarına erişemeyebilir. Geçmişe yönelik uyumluluk açısından PHP 5 ile birlikte "mysqli" isimli bir eklenti gelmiştir. Kullanım olarak hemen hemen aynıdır. php.ini dosyasından "php_mysql" eklentisini kapatıp "php_mysqli" eklentisini açmanız ve "mysql_" şeklinde kullandığınız tüm komutları "mysqli_" şeklinde kullanmanız gerekmektedir. Fakat benim tavsiyem, çok geçerli bir nedeniniz olmadığı sürece güncel bir MySQL versiyonu kullanmanızdan yanadır.
select dbi)
Bu komut mysql_connect komutundan sonra kullanılmalıdır. Eğer MySQL ile başarılı bir bağlantı kurulmuşsa bu durumda mysql_select_db ile MySQL üzerinde yer alan herhangi bir veritabanına erişim sağlanabilir. Bu örnekte MySQL'in içinde hazır gelen "mysql" veritabanını kullandık. Siz kendi veritabanlarınızdan biriyle de test edebilirsiniz.
mysql_select_db'den dönen sonuç boolean bir değerdir, yani true/false şeklindedir. Ancak bu örneklerde "or die" kullandığımız için dönen değerin false olma ihtimalini kontrol etmeye gerek yok. Herhangi bir problem çıkması halinde "die" komutunda yazdığımız mesaj ekrana yazılacak ve PHP scriptinin çalışması o noktada sona erecektir.
mysql_select_db 2 parametre alır. İlk parametre mecburi, ikincisi opsiyoneldir. Veritabanı ismi: MySQL üzerinde bağlanılmak istenen veritabanının ismi. Bağlantı numarası: mysql_connect komutundan dönen numara.
Tek bir bağlantı olduğu taktirde ikinci parametre kullanılmadan da istenilen veritabanına bağlanılabilir.
mysal gueryl)
MySQL'e bir sorgu gönderir. Bu komutu kullanabilmek için yalnızca MySQL'e bağlı olmak yeterlidir. Henüz bir veritabanı seçmemiş bile olsanız gönderebileceğiniz sorgular mevcuttur (örnek sorgu: SHOW DATABASES).
query bir tablo döndürür. Bu tablonun kaça kaç boyutunda olacağı sorguya göre değişir. Tablo tek bir hücreden oluşabileceği gibi binlerce/milyonlarca kolon ve satırdan da oluşabilir.
mysql_query 2 parametre alır. İlk parametre mecburi, ikincisi opsiyoneldir.
Sorgu: MySQL sunucusuna gönderilecek SQL cümlesi.
Bağlantı numarası: mysql_connect komutundan dönen numara.
Bu komuttan dönen tablonun hücrelerine erişmek için tablo üzerinde satır satır dolaşmak ve her satırdan dönecek kolon dizilerinden hücre değerlerini okumak gerekir.
mysql_num_fields() Bu komut tabloda yer alan toplam kolon sayısını döndürür.
mysql_num_fields tek (mecburi) parametre alır.
Tablo: mysql_query'den dönen tablo.
mysql_field_name()
Tablonun kolonlarının başlıkları bu komut ile okunur. Örnek olarak veritabanında isim, soyad, şirket, telefon kolonlarından oluşan bir tablo var ise bu komut ile bu başlıkları okumamız mümkündür.
mysql_field_name komutundan text biçiminde kolon ismi döner.
mysql_field_name 2 mecburi parametre alır.
Tablo: mysql_query'den dönen tablo.
Kolon numarası: 0'dan başlayarak kaçıncı kolonun ismini döndüreceği.
Kolon numarası örnek olarak 4 kolonlu bir tablo için 0-3 aralığındadır.
mysql_fetch_array()
Bu komutun görevi, tablonun satırları üzerinde ilerleyerek satır içeriklerini bir dizi halinde döndürmektir. Bu komutun bir diğer özelliği bir satırı okuduktan sonra otomatik olarak bir sonraki satıra atlamasıdır. Bu komut peş peşe çağrılarak tüm satırlar okunabilir.