Anasayfa » Web Programlama

Php ile MySQL Veritabanı İşlemleri – 2

6 Temmuz 2009 Görüntülenme: 1.440 3 Yorum Yazar: ataguL
Kötüİdare ederOrtaGüzelMükemmel (Değerlendir)

Php ile MySQL veritabanı işlemleri yazısının ikincisi ile karşınızdayız. Evet arkadaşlar. Bu  satırları blog sahibi olan ben (Ahmet) yazıyorum. Bu satırların altındaki yazıyıda atagul.net'in sahibi aynı zamanda benim üniversiten yakın bir arkadaşım olan Tanju hazırladı. İlk yazıyı gördükten sonra devamını kendisi getirmek istedi. Bende kırmadım hazırladığı yazıyı biraz düzenledikten sonra yayına hazırladım. Yazıyı okumadan bu yazıdan önce yayınlanan  Php ile MySQL Veritabanı İşlemleri - 1 başlıklı yazımı okumanızı öneririm. Çünkü bu yazı önceki yazının devamı niteliğindedir. Aşağıdan yazıyı okumaya devam edebilirsiniz.

MySQL Select

SELECT komutu veritabanından veri çekmek(seçmek) için kullanılır. Genel kullanımı şu şekildedir.

SQL:
  1. SELECT sütun_ad(lar)ı FROM tablo_adı

Örnek:
Aşağıdaki kodlar “linkler” adlı tabloda ki (bir önceki dersimizde kullanmıştık) bütün verileri seçer. ( * karakteri database’de ki bütün veriyi çeker.)

PHP:
  1. <?php
  2. $baglanti = mysql_connect("localhost","root",""); //veritabanı bağlantısı yapıyoruz
  3. if (!$baglanti) //durumu kontrol ediyoruz.
  4. {   die('Bağlantı Hatası : ' . mysql_error()); //hata var ise bu alan görüntülenir.
  5. }
  6. mysql_select_db("link", $baglanti); //veritabanını seçiyoruz
  7. $sonuc = mysql_query("SELECT * FROM linkler"); //linkler tablosundaki bütün (*) verileri çekip sonuc değişkenimize aktardık
  8. while($satir = mysql_fetch_array($sonuc))
  9. {
  10. echo $satir['link_baslik'] . " " . $satir['link_adres'] ." ". $satir['link_aciklama'];
  11. ";
  12. } // burada kullandığımız mysql_fetch_array() fonksiyonu her çağırıldığında sonuçlarımızdaki kayıtları ilk kayıttan başlayarak sırasıyla döndürmektedir. Biz de while döngüsünü kullanarak “sonuc” değişkenimizdeki ilk satırı “satir” değişkenimize aktardık. Ardından echo komutu ile her sütun arasına bir boşluk bırakarak ekrana yazdırdık. Döngü başa döndüğünde ise mysql_fetch_array() ikinci kayıdı döndüreceği için ikinci satırımız ekrana yazılmış olacak. Kayıtlarımız bitene kadar döngü devam edecek ve ardından veritabanımızı kapatacağız.
  13. mysql_close($baglanti); //veritabanını kapatıyoruz.
  14. ?>

Bu kodları goster.php olarak adlandırdığımız bir Php sayfasına ekleyip bu sayfayı çağırdığımızda, bilgiler.php sayfasındaki form aracılığıyla eklediğimiz bütün kayıtlar ekranda listelenecektir.

MySQL Where

Where koşulu tablomuzdan çekeceğimiz verileri filitrelememizi sağlar. Genel kullanımı şu şekildedir.

SQL:
  1. SELECT sütun_ad(ları)ı FROM tablo_adı WHERE sütun_adı="koşul-değer"

İşte örneğimiz:

PHP:
  1. $baglanti = mysql_connect("localhost","root",""); //veritabanı bağlantısı yapıyoruz
  2. if (!$baglanti) //durumu kontrol ediyoruz.
  3. {
  4. die('Bağlantı Hatası : ' . mysql_error()); //hata var ise bu alan görüntülenir.
  5. }
  6. mysql_select_db("link", $baglanti); //veritabanını seçiyoruz
  7. $sonuc = mysql_query("SELECT * FROM linkler
  8. WHERE link_baslik='renkli teneke'"); // linkler tablosundaki bütün veriyi çekip başlığı “renkliteneke” olanları “sonuc” değişkenine aktardık.
  9. while($satir = mysql_fetch_array($sonuc))
  10. {
  11. echo $satir['link_baslik'] . " " . $satir['link_adres'] . " " . $satir['link_aciklama'];
  12. ";
  13. //  üstteki örnekte olduğu gibi “sonuc” değişkenimizdeki her satırı “satir” değişkenine aktardıktan sonra ekrana yazdırdık.
  14. }
  15. ?>

MySQL Order By

Order By komutu kayıtlarımızı sıralamak için kullanılır. Order By varsayılan olarak kayıtları artan(ASC) sıralar. Eğer azalan olarak sıralamak isterseniz DESC komutunu kullanabilirsiniz.

SQL:
  1. SELECT sütun_ad(lar)ı FROM tablo_adı ORDER BY sütun_ad(lar)ı ASC (veya) DESC

Hemen Php içerisindeki kullanımına bakalım;

PHP:
  1. $baglanti = mysql_connect("localhost","root",""); //veritabanı bağlantısı yapıyoruz
  2. if (!$baglanti) //durumu kontrol ediyoruz.
  3. {
  4. die('Bağlantı Hatası : ' . mysql_error()); //hata var ise bu alan görüntülenir.
  5. }
  6. mysql_select_db("link", $baglanti); //veritabanını seçiyoruz
  7. $sonuc = mysql_query("SELECT * FROM linkler ORDER BY link_baslik"); // linkler tablosundaki bütün kayıtları seçip link_baslik sütununa göre sıraladık.
  8. while($satir = mysql_fetch_array($sonuc))
  9. {
  10. echo $satir['link_baslik'] . " " . $satir['link_adres'] . "" . $satir['link_aciklama'];
  11. ";
  12. //  üstteki örneklerde olduğu gibi “sonuc” değişkenimizdeki her satırı “satir” değişkenine aktardıktan sonra ekrana yazdırdık.
  13. }
  14. mysql_close($baglanti)//veritabanını kapatıyoruz.
  15. ?>

Dikkat ettiyseniz örneğimizde ne ASC ne de DESC kullandık. Order By varsayılan olarak ASC(artan) sıraladığı için kayıtlarımız A’dan Z’ye sıralanacak. Eğer tersine sıralamak istersek DESC kullanmamız gerekir. O zaman da SQL’imiz şu şekilde olacaktı;

SQL:
  1. SELECT * FROM linkler ORDER BY link_baslik DESC

Ayrıca kayıtlarımızı birden fazla sütuna göre sıralamakta mümkündür. Birden fazla sütuna göre sıraladığımızda ikinci sütun sadece ilk sütunun değerleri eşit olan kayıtlarda sıralanacaktır. Hemen ufak bir örnekle anlatayım. Aşağıdaki kayıtları içeren “ad” ve “soyad” sütunları bulunan bir tablomuz olsun.
1. Ahmet Ertürk
2. Tanju Atagül
3. Ahmet Dursun
4. Tanju Çolak
İki sütuna göre sıralamak için şu kodları kullanıyoruz.

SQL:
  1. SELECT * FROM isimler ORDER BY ad ASC, soyad DESC

Bu sorgu şu anlama gelmektedir: “isimler” tablosundaki bütün kayıtları seç, “ad” sütununa göre artan (ASC yazmasanızda artan sıralar) “soyad” sütununa göre de azalan sırala.
Sorgu sonucunda sıralama şu şekilde olacaktır;
1. Ahmet Ertürk
3. Ahmet Dursun
4. Tanju Çolak
2. Tanju Atagül

MySQL Update

Update komutu veritabanındaki kayıtları güncellememizi sağlar. Kullanımı şu şekildedir;

SQL:
  1. UPDATE tablo_adı SET sütun1=değer, sütun2=değer,... WHERE sütun_adı=değer

Dikkat ettiyseniz Where koşulunu kullandık. Where koşulu burada hangi kayıdın ya da kayıtların güncelleneceğini belirlemek içindir. Burası çok önemli, eğer Where koşulunu yazmazsanız kayıtlarınızın tamamı güncellenir! Order By da yazdığım “isimler” isimli tablomuzda bir güncelleme yapalım hemen. Bu arada “isimler” tablomuzun da “linkler” tablosu gibi “link” adlı veritabanımızda olduğunu varsayıyoruz.

PHP:
  1. <?php
  2.  
  3. $baglanti = mysql_connect("localhost","root",""); //veritabanı bağlantısı yapıyoruz
  4. if (!$baglanti) //durumu kontrol ediyoruz.
  5. {
  6. die('Bağlantı Hatası : ' . mysql_error()); //hata var ise bu alan görüntülenir.
  7. }
  8. mysql_select_db("link", $baglanti); //veritabanını seçiyoruz
  9. mysql_query("UPDATE isimler SET soyad = 'Yesevi'
  10. WHERE ad = 'Ahmet' AND soyad = 'Dursun'");
  11. //veritabanına şunu demiş olduk; isimler tablosunda “ad” sütunu ‘Ahmet’, “soyad” sütunu ‘Dursun’ olan kaydın “soyad” sütununu ‘Yesevi’ olarak güncelle
  12. mysql_close($baglanti); //veritabanını kapatıyoruz
  13. ?>

Bu kodları çalıştırdıktan sonra veritabanını açıp bakarsanız “isimler” tablosunda Ahmet Dursun yerine Ahmet Yesevi kaydını görürsünüz. Eğer koşulumuzda “AND soyad=’Dursun’” kısmını kullanmasaydık, yani sadece “Where ad = ‘Ahmet’” kullansaydık hem Ahmet Ertürk hem de Ahmet Dursun kaydını Ahmet Yesevi olarak güncellendiğini görürdük. Yani tablomuzda “ad” sütununun değeri ‘Ahmet’, “soyad” sütununun değeri ‘Yesevi’ olan iki kaydımız olurdu. Where koşulunu hiç kullanmasaydık bütün kayıtların soyadı ‘Yesevi’ olarak değişecekti.

MySQL Delete

Delete komutu tablomuzdan kayıt silmek için kullanılır. Kullanımı şu şekildedir;

SQL:
  1. DELETE FROM tablo_adı WHERE sütun_adı = değer

Update komutunda olduğu gibi Delete komutunda da Where kullanmamız gerekir. Eğer ki Where koşulunu kullanmazsak tablomuzdaki bütün kayıtlar silinecektir! Şimdi de “isimler” tablomuzda az önce düzenlediğimiz Ahmet Yesevi kaydını silelim.

PHP:
  1. $baglanti = mysql_connect("localhost","root",""); //veritabanı bağlantısı yapıyoruz
  2. if (!$baglanti) //durumu kontrol ediyoruz.
  3. {
  4. die('Bağlantı Hatası : ' . mysql_error()); //hata var ise bu alan görüntülenir.
  5. }
  6. mysql_select_db("link", $baglanti); //veritabanını seçiyoruz
  7. mysql_query("DELETE FROM isimler WHERE soyad='Yesevi'");
  8. // ”isimler” adlı tabloda “soyad” sütununun değeri ‘Yesevi’ olan kayıtları sil.
  9. mysql_close($baglanti); //veritabanını kapatıyoruz
  10. ?>

Yukarıdaki sorguya uyan tek kayıt ‘Ahmet Yesevi’ kaydı olduğu için sadece bu kayıt silinecektir. Eğer koşulumuz “soyad='Yesevi'” değil de “ad=’Ahmet’” olsaydı hem ‘Ahmet Ertürk’ hem de ‘Ahmet Yesevi’ kayıtlarının ikisi birden silinecekti.

Son oalrak şunu söylemek istiyorum; farketmişsinizdir, bütün örneklerimizde sadece tek bir satır farklı: mysql_query(); komutunun bulunduğu satır. Geri kalan veritabanı bağlantısı, veritabanı seçimi ve veritabanı bağlantısının kapatılması yapılan bütün satırlar aynı. Yani iyi derecede SQL bilginiz varsa çok güzel bir (İçerik Yönetim Sistemi)İYS yazabilirsiniz. Eğer yeterince SQL bilmediğinizi düşünüyorsanız sitemizi takip etmeye devam edin, sayemizde çok iyi derecede SQL öğreneceksiniz.
Evet arkadaşlar bu yazımızın da sonuna geldik. Umarım faydalı bir yazı olmuştur. Tekrar görüşmek üzere şimdilik hoşçakalın.

Yazıyı beğendiysen başka yerlerde paylaşabilirsin:
  • Google Bookmarks
  • Digg
  • Twitter
  • del.icio.us
  • Facebook
  • MySpace
  • Netvibes
  • Live
  • FriendFeed
  • Technorati
  • StumbleUpon
  • Reddit
RenkliTeneke.Com blogundaki yeni yazılardan haberdar olmak için RSS Abonesi olabilirsiniz. İsterseniz Twitter'dan ya da FriendFeed'den takip edebilirsiniz. Ya da "Yeni yazılar e-mail adresime gelsin" diyorsanız e-mail abonesi olabilirsiniz.
Merhaba sevgili ziyaretçi. Şuanda renkliteneke.com bloguna " ataguL" tarafından " 6 Temmuz 2009" tarihinde yazılmış olan "Php ile MySQL Veritabanı İşlemleri – 2" başlıklı bu yazıyı okuyorsun. Bu yazının başka bir yerde yayınlaması yasaktır. Her yazı ayrı bir özen içerisinde hazırlanıyor ve bu emeğin iki tık ile heba edilmesi pek hoşuma gitmez. Bu açıklama ise bilgilenmeniz için yazılmıştır.

3 Yorum »

  • raozkardes demiş ki:

    Yine muhteşem bilgilendirici, eğitici bir yazı. Elleriinize sağlık. Kodların ilk makalede olduğu gibi demo sayfalarını oluşturup yayınlayabilir misiniz? Kendi adıma bu şekilde içinden çıkamıyorum.

  • raozkardes demiş ki:

    Mümkünse ilk makalenin devamı gibi olsun. ekleyeceğiniz demo sayfalar birbirini takip etsin. Benimki sadece bir fikir. Uygun görürseniz daha yararlı olacağını düşünüyorum.

  • saffah demiş ki:

    emrin olur paşam :P yani kusura bakmayın ama isteklerinizin ardı arkası kesilmeyecek gibi geldi birden bana.

Yukarıdaki yazı hakkında kendi düşüncelerinizi yazın!

Lütfen yukarıdaki yazı hakkında düşüncelerini paylaş. Senin düşündüklerin bazen bu blogdaki yeni yayınlanacak yazının hangi konuda yazı yazılması gerektiğini belirliyor.

Yorum ekleye bilir yada yazı için geri bildirim gönderebilirsiniz. Bu yazı için yorumlarına abone ol: subscribe to these comments

 

Yorum içerisinde kullanabileceğiniz Html tagları :
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Yazıya yorum yazdığınızda yorumunuzun hemen yanında bir Gravatarınız yayınlanacaktır.
Hani benim Gravatarım? Gravatar'da neyin nesi?