Php ile MySQL İşlemleri

 bcakir
 18 Ocak 2012

Merhaba arkadaşlar, sizler yorumlarında sıkça veritabanı işlemlerini anlayamadığınızı yazıyorsunuz, bundan dolayı da hem veritabanı (SQL) sorgularını hem de MySQL ile veritabanı işlemlerini basit düzeye indirerek anlatmaya çalışacağım. Belki bu kodlar kısa sürede hafızanızda kalmaz ama bu makaleye bakarak kolayca veritabanı işlemlerini yapabilirsiniz. Şimdi bir veritabanı oluşturarak yazımıza başlayalım. İlk önce phpMyAdmin kontrol sayfasına gidip karşılaştırma seçeneği latin5_turkish_ci olan bir veritabanı oluşturun. Sonra, ya aşağıdaki kodları oluşturduğunuz veritabanının içerisine girip, “Sorgu penceresi” kısmına yapıştırın ve sorguyu çalıştırın ya da id, icerikyazar ve onay kolonlarından oluşan yazilar tablosunu elle yapın.

CREATE TABLE yazilar(
    id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    icerik VARCHAR(1000) NOT NULL,
    yazar VARCHAR(75) NOT NULL,
    onay INT(1) NOT NULL default '0'
);

Veritabanımızı, veritabanımızın içerisindeki tablomuzu ve tablomuzda yer alacak olan sütunlarımızı (kolon) oluşturduk. Şimdi geldi bu veritabanıyla yapılabilecek işlemleri tanımaya. Bu işleme geçmeden önce tablonuza birkaç tane kayıt girmenizde fayda var. Çünkü boş tablodan herhangi bir şey getiremeyiz.

<?php
//veritabanı bilgilerinizi girin
$k_adi="root";
$sifre= "";
$vt_name="bcakir";

//veritabanına bağlanma
$baglan=mysql_connect("localhost",$k_adi,$sifre);
mysql_select_db($vt_name,$baglan);

//tabloya kayıt girme
$ekle="INSERT INTO yazilar (id, icerik, yazar, onay) VALUES ('5', 'Bu ilk kayıttır.','bcakir', '1')";
mysql_query($ekle);

//tabloda var olan kaydı değiştirme
$degistir="UPDATE yazilar SET icerik='İlk yazımı değiştiriyorum.' WHERE id='5'";
//kayıt değiştirme işleminin sonucunu erana yazma
$sonuc=mysql_query($degistir);
//veritabanı işleminin başarılı olup olmadığı
//başarılı olup olmadığını diğerlerinde de (ekleme, silme vs.) kullanabilirsiniz
if ($sonuc){
    echo "Kayıtınız değiştirildi.";
}else{
    echo "Kaydınız değiştirilemedi.";
}

//tablodan onaylanmış bütün kayıtları çağırma
$getir="SELECT icerik, yazar FROM yazilar WHERE onay='1'";
$bul=mysql_query($getir);

//çağrılan kayıtları ekrana yazma
while($satir=mysql_fetch_array($bul)){
    echo $satir[0]."<br />";
    echo $satir[1];
}

//tablodan kayıt silme
$sil="DELETE FROM yazilar WHERE id='5'";
mysql_query($sil);

//veritabanı bağlantısını kapatma
mysql_close($baglan);
?>

Yukarıda temel olarak veritabanı ile yapabileceğimiz işlemleri görmüş olduk. Bu kadarı, temel düzey programlama ve veritabanı işlemleri için yeterlidir. Fakat, ileri düzey sorgular yapmanız gerektiğinde (iki tabloyu birleştirme gibi) şimdi anlatacağım SQL sorgularını kullanmanız gerekecektir.

//yazar tablosundaki onay kolonunun değerleri toplamını verir
SELECT sum(onay) FROM yazilar

//yazar kolonundaki tekrar eden değerleri almaz
SELECT Distinct yazar FROM yazilar

//yazarı bcakir olan kayıtların bütün kolonlarını getirir
SELECT * FROM yazilar WHERE yazar='bcakir'

//onay değeri sıfırdan (0) büyük olan kayıtların icerik ve yazar kolununu getirir
SELECT icerik, yazar FROM yazilar WHERE onay>1

//onay kolonundaki en küçük değeri getirir
SELECT min(onay)

//onay kolonundaki en büyük değeri getirir
SELECT max(onay)

//tabloya girilen son kayıt değerini getirir
SELECT LAST_INSERT_ID()

//tabloya girilen kayıtları id değeri en küçükten büyüğe doğru getirir
SELECT * FROM yazilar ORDER BY id ASC

//tabloya girilen kayıtları id değeri en büyükten küçüğe doğru getirir
SELECT * FROM yazilar ORDER BY id DESC

//tablodaki 5. satırdan sonra gelen ilk 10 satırı getirir
SELECT * FROM yazilar LIMIT 5, 10

//yazar kolonunda ilk harfi b olan ve en az 2 harften oluşan kayıtların, icerik ve yazar kolonunu getirir
SELECT icerik, yazar FROM yazilar WHERE yazar LIKE 'b_%'

//yazar kolonunda b harfi bulunan bütün kayıtları siler
DELETE FROM yazilar WHERE yazar LIKE '%b%'

//yazilar ve kategoriler tablosunu birleştirip, eşleşen bütün kayıtları getirir
SELECT * FROM yazilar y, kategoriler k WHERE y.id=k.id

//id değeri 5 olan yazının, kategori başlığını getirir
SELECT k.baslik FROM yazilar y, kategoriler k WHERE y.id=k.id AND y.id='5'

//kategorisi Php olan bütün yazıların sadece icerik kolonunu getirir
SELECT icerik FROM yazilar Where k_id=(SELECT id FROM kategoriler WHERE baslik='Php')

//Php kategorisindeki bütün yazıları Yazılım kategorisine taşır (Yazılımın kategori değerini 3 varsayıyoruz)
UPDATE yazilar SET k_id='3' WHERE k_id=(SELECT id FROM kategoriler WHERE baslik='Php')

Yukarıda genel olarak ileri düzey SQL sorgularına yer verdim. Özellikle son 4 örnek, yeni başlayanlar için zor olabilir ama yazılım yaptıkça ve programlama bilginizi geliştirdikçe bunları kolaylıkla kullanmaya başlayacaksınız. Son 4 örnek, çoklu tabloları kullanma ile ilgiliydi. Son 2 örnek alt sorgu (SUBQUERY) diğer ikisi ise tablo birleştirme (JOIN) örneğiydi. Tablodan kayıt alma (SELECT) dışındaki sorgularda yani ekleme, silme ve değiştirme yapmak için tablolar birleştirilemez (JOIN). Sadece alt sorgu (SUBQUERY) kullanılabilir. Tablo birleştirirken dikkat etmeniz gereken bir kuralı da anlatarak yazıma son vereyim. Tablo birleştirirken en az tablo sayısından 1 eksik olmak üzere (n-1), tablo birleştirme koşulu (WHERE koşulu) kullanmalısınız. Yani, 4 tabloyu birleştirmek için en az 3 tane, 2 taneyi birleştirmek için en az 1 tane tablo birleştirme koşulu kullanmalısınız. Tabloları birleştirmede önemli bir kuralı da sizlerle paylaşarak yazımın sonuna gelmiş oldum. Yararlı olması dileğiyle.

 1.455 Okunma

Bu yazıya 4 yorum yapılmış.

  1. Kayıt olma formlarında , giriş formlarında ve benzeri veritabanı kontrolü yaptıran sistemlerde bu makaleyi baştan sona bilmeniz gerekiyor. Gayet iyi makale olmuş teşekkürler 🙂

    • Teşekkür ederim. Veritabanı dersini veren hocamızın bir sözü vardı “hep daha iyi nasıl anlatabilirim diye sorarım kendime” diyordu. Ben de onun izini takip etmeye çalışıyorum. 😀

  2. Birşey sorucam php ile online kulllanıcıları ismiyle birlikte listeleyebilirmisin kullanıcı adı ve şifresiyle girş yaptığında listede gözükücek yani

    • İstediğin işlemin benzerini bu yazıda yapmıştım. Senin tek yapman gereken, ip adresinin yanında, kullanıcının ismini de veritabanına kaydetmek.

Yazı hakkında görüşlerinizi belirtmek istermisiniz?

Daha fazla MySQL, Php
Kapat