Artık derslere biraz hareketlilik kazandırmanın zamanı gelmişti. Bu yazıda gezdiğiniz binlerce sitede de kullanılan, ürün kaydetme ve listeleme, yorum yapma gibi sistemler için kullanılan veritabanı işlemlerini anlatacağım. Ancak veri ekleme ve düzenleme işlemlerini panel mantığında form ile düzenlemek istiyorsanız bir sonraki derste anlatacağım form işlemlerini bilmeniz gerekir. Bu yazıda da hatırlatırım ki php kodlarının çalışması için <? ve ?> tagları arasına yazılamaları gerekir. Ders boyunca örnek olarak gösterilen tüm kodları yazının sonundaki linkten indirebilirsiniz.

  • Ders altı ana başlıktan oluşuyor;
    • Veritabanı bağlantısı
    • Veri ekleme
    • Veri listeleme
    • Veri düzenleme
    • Veri silme
    • İşlem Kontrolü

Veritabanı Bağlantısı

MySQL veritabanında herhangi bir işlem yapmadan önce bağlantıyı tanımlamanız gerekir, öncelikle bunu sağlayacağız.

PHP:
  1. $host="localhost"; //veritabanı hostu
  2. $kadi="balkoncu"; //veritabanı kullanıcı adı
  3. $sifre="balkoncu_sifre"; //veritabanı şifre
  4. $veritabaniadi="balkoncu_database"; //veritabanı adı
  5. $baglanti=mysql_connect($host,$kadi,$sifre); //veritabanı hostuna bağlanma fonksiyonu
  6. mysql_select_db($veritabaniadi,$baglanti); //veritabanı seçme fonksiyonu

Bu kodda kullandıklarımızı satır satır açıklayalım;
$host : Bu değişkeni veritabanımızı barındıran host adresini atamak için kullandık. Eğer bilgisayarınızda kurulu sistemde çalışıyorsanız burası aynen localhost olarak kalacaktır. Host firmalarından aldığınız hostlarda da gene localhost olarak kalabilir veyahut host firmanızın belirlediği bir adres olabilir. Ayrıntılı bilgi için hostunuza danışın.
$kadi : Veritabanına bağlanırken kullanılacak kullanıcı adı. Bu kodu yerel sunucunuzda kullanacaksanız phpMyAdmin 'e girin ve İmtiyazlar yada Privileges* yazan yere tıklayarak ayarlayın. Hosting kullanıyorsanız kullanıcı adını panelde bulabilir yada destek için hosting firmanızla irtibata geçebilirsiniz.
$sifre : Kullanıcı adı ile birlikte kullanılacak şifre, kullanıcı adı ile aynı şekilde ayarlamaları yapabilirsiniz.
$veritabaniadi : Bu değişkeni adın da anlaşılacağı üzere veritabanımızın adını belirleyerek seçmek için kullandık. Bu phpMyAdmin 'de veritabanını oluştururken verdiğiniz addır. Host şirketiniz bunu otomatik belirlemiş olabilir.
Geri kalan kısımda bu değişkenleri ve gerekli donksiyonları kullanarak veritabanına bağlandık. Tırnak arasındaki bilgileri değiştirerek kendi veritabanınıza uyarlayabilirsiniz.

Veri Ekleme

Bir tabloya veri eklemeyi basit bir örnekle anlatacağım. Yeni oluşturduğumuz veritabanında hali hazırda bir tablo olmadığı için öncelikle aşağıdaki sql kodlarını phpMyAdmin yada direkt php aracılığıyla çalıştırmamız gerekir.

SQL:
  1. CREATE TABLE `ogrenciler` (
  2. `id` BIGINT( 255 ) NOT NULL AUTO_INCREMENT ,
  3. `ad` TEXT NOT NULL ,
  4. `soyad` TEXT NOT NULL ,
  5. UNIQUE (`id`)
  6. );

Bu kodlar ogrenciler adında bir tablo oluşturur ve içine id, ad, soyad adında 3 sütun ekler. phpMyAdmin ile çalıştırmak için phpMyAdmin 'de iken veritabanınızı seçin ve SQL sekmesine yukarıdaki kodları yapıştırın. Php ile çalıştırmak için aşağıdaki kodu bir php dosyası olarak kaydedin ve gerekli düzenlemeleri yaparak çalıştırın.

PHP:
  1. //veritabanına yukarıdaki örnekteki gibi bağlandık
  2. $host="localhost";
  3. $kadi="balkoncu";
  4. $sifre="balkoncu_sifre";
  5. $veritabaniadi="balkoncu_database";
  6. $baglanti=mysql_connect($host,$kadi,$sifre);
  7. mysql_select_db($veritabaniadi,$baglanti);
  8.  
  9. //sql kodunu bir değişkene atayıp çalıştırıyoruz
  10. $olustur='
  11. CREATE TABLE `ogrenciler` (
  12. `id` BIGINT( 255 ) NOT NULL AUTO_INCREMENT ,
  13. `ad` TEXT NOT NULL ,
  14. `soyad` TEXT NOT NULL ,
  15. UNIQUE (`id`)
  16. );
  17. ';
  18. mysql_query($olustur);

Veritabanı tablomuzu oluşturduktan sonra sıra php ile veri eklemeye geldi. Aşağıda örnek verilmiştir, tabii ki bu kodların çalışması için veritabanı bağlantımızı da kodların başına eklememiz gerekir.

PHP:
  1. //ekleyeceğimiz değerleri belirliyoruz
  2. $ad="Ali";
  3. $soyad="Veli";
  4. //sql komutumuzu belirleyip çalıştırıyoruz
  5. $sql="insert into ogrenciler (id, ad, soyad) values ('', '$ad','$soyad')";
  6. mysql_query($sql);

Bu kodları çalıştırdığımızda balkoncu_database adlı veritabanının ogrenciler adlı tablosuna 1 | Ali | Veli şeklinde verileri içeren bir satır eklenir. Burada id değerine bir şey atamıyoruz çünkü id kolonunun özelliklerini belirlerken auto_increment dedik. Yani bu kolona otomatik olarak bir artan sayı ekleniyor. Bir dahaki kayıtta id, iki (sayıyla) değerini alır. Id kolonunu kayıt seçerken, silerken ve düzenlerken kolaylık ve güvenlik olması açısından kullanırız. Aynı zamanda bu kolon her satır için eşşiz (unique) bir değer alır, hiçbir kayıtın id'si aynı olmaz.

Veri Listeleme

Kayıtları ekrana yazdırmak için aşağıdaki kodları kullanırız.

PHP:
  1. $sql="select * from ogrenciler"; //ogrenciler tablosundan tüm kolonları seç
  2. $sorgu=mysql_query($sql);
  3. while ($sonuc=mysql_fetch_array($sorgu)) { //tüm kayıtları listele
  4. echo "Kayıt id : ".$sonuc["id"];
  5. echo "<br />"; //alt satıra geçmek için
  6. echo "Ad : ".$sonuc["ad"];
  7. echo "<br />";
  8. echo "Soyad : ".$sonuc["soyad"];
  9. echo "<br /><br />"; //kayıttan sonra bir satır boşluk bırakmak için
  10. }

İlk satırdaki kodlar ile çalıştırılacak sql sorgusunu $sql değişkenine atadık, select * komutu ile tüm kolonları birden seçmesini istedik. Bu kod tablodaki tüm verileri listeler. Şimdilik sadece tek satır girdisi yaptığımız için sadece Ali Veli bilgilerini görüntüler. Veri eklemek için yazdığımız kodu bir daha çalıştırırsanız, bir satır daha eklenmiş olur ve bu kodu çalıştırdığınızda iki kayıt görürsünüz. Bu örnekte echo kullanılmış tüm satırları birleştirmek mümkün fakat daha anlaşılır olması için bu şekilde yazdım.balkoncucom_ornek

Veri Düzenleme

Bu kısımda da veritabanına eklediğimiz veriyi nasıl değiştireceğimizi göreceğiz. Bunun için update sql komutunu kullanıyoruz.

PHP:
  1. $sql="update ogrenciler set ad='Hasan', soyad='Korucu' where id='1'";
  2. mysql_query($sql);

Kodlarını çalıştırdığımızda Ali Veli olan veriler Hasan Korucu şeklinde değişir. Burada where id='1' komutunu güncellemek istediğimiz verinin id'sini belirtmek için kullandık. Id kısmını hiç kullanmadan where ad='Ali' şeklinde de bu işlem yapılabilir. Fakat tabloda Ali adında birden fazla öğrenci olduğunda bu işlemde karışıklık olabilir. Hem ad hem soyad kullanarak da güncellenecek satırı seçebiliriz. Bunun için komutu where ad='Ali' and soyad='Veli' şeklinde düzenlemeliyiz. Fakat böyle kullanımlar yerine unique (eşşiz) kolonun, yani id'nin kullanılması kodun daha hızlı çalışmasını sağlar.

Veri Silme

Son olarak silme işlemini de örnekle görelim.

PHP:
  1. $sql="delete from ogrenciler where id='1'";
  2. mysql_query($sql);

Bu kod ogrenciler tablosunda id'si 1 olan satırı silecektir. Aynı şekilde düzenleme de bahsettiğim gibi burda da silinecek satırı seçerken diğer kolonlardan faydalanabiliriz. Örnek aşağıdadır.

PHP:
  1. $sql="delete from ogrenciler where ad='Hasan' and soyad='Korucu'";
  2. mysql_query($sql);

Yukarıdaki kod da ad Hasan ve soyad Korucu olarak kayıt edilmiş satırı siler.

İşlem Konrolü

İşlemleri yaparken her seferinde sql komutumuzu mysql_query fonksiyonuna yolluyoruz ve bu yolla çalıştırıyoruz. Eğer işlemi yaparken bir hata oluşursa bunu öğrenmek için mysql_query fonksiyonu kullandığımız satırları aşağıdaki şekilde düzenleyebiliriz.

PHP:
  1. mysql_query($sql) or die("MySQL sorgusunda hata oluştu.<br />Hata : " . mysql_error());

Burada sql sorgusu çalıştırılırken ters giden bir şey olursa die komutuyla hata yazdırmasını sağladık. Hata kısmından sonra mysql_error fonksiyonu ile hatanın detayları görüntülenecek fakat bu detaylar İngilizce** olacaktır.

Bu derste PHP ile MySQL veritabanı işlemlerini genel olarak anlattım. Tabii ki daha güvenli ve/veya farklı yöntemler de vardır fakat bunlar daha komplike yöntemlerdir. Bu dersin seviyesi 'yeni başlayanlar için' dir.
Ders boyunca kullandığımız tüm kodları indirmek için buraya tıklayabilirsiniz.

* Kullandığınız phpMyAdmin sürümüne ve diline bağlı olarak değişiklik gösterebilir, çoğu sürümde kilit ve insan simgesi ile temsil edilir.
** Burdaki dil kullandığınız PHP sürümüne ve sunucuda yapılan değişikliklere göre farklılık gösterebilir. Genel olarak çıktı İngilizce görünür.

Bir dahaki derste görüşmek üzere, iyi çalışmalar :)