MySQL Veritabanı İşlemleri - PHP
PHP, Webmaster kategorisine 06 Haziran 2009 tarihinde yazılmış.
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.
-
$host="localhost"; //veritabanı hostu
-
$kadi="balkoncu"; //veritabanı kullanıcı adı
-
$sifre="balkoncu_sifre"; //veritabanı şifre
-
$veritabaniadi="balkoncu_database"; //veritabanı adı
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.
-
CREATE TABLE `ogrenciler` (
-
`id` BIGINT( 255 ) NOT NULL AUTO_INCREMENT ,
-
`ad` TEXT NOT NULL ,
-
`soyad` TEXT NOT NULL ,
-
UNIQUE (`id`)
-
);
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.
-
//veritabanına yukarıdaki örnekteki gibi bağlandık
-
$host="localhost";
-
$kadi="balkoncu";
-
$sifre="balkoncu_sifre";
-
$veritabaniadi="balkoncu_database";
-
-
//sql kodunu bir değişkene atayıp çalıştırıyoruz
-
$olustur='
-
CREATE TABLE `ogrenciler` (
-
`id` BIGINT( 255 ) NOT NULL AUTO_INCREMENT ,
-
`ad` TEXT NOT NULL ,
-
`soyad` TEXT NOT NULL ,
-
UNIQUE (`id`)
-
);
-
';
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.
-
//ekleyeceğimiz değerleri belirliyoruz
-
$ad="Ali";
-
$soyad="Veli";
-
//sql komutumuzu belirleyip çalıştırıyoruz
-
$sql="insert into ogrenciler (id, ad, soyad) values ('', '$ad','$soyad')";
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.
-
$sql="select * from ogrenciler"; //ogrenciler tablosundan tüm kolonları seç
-
echo "<br />";
-
}
İ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.
-
$sql="update ogrenciler set ad='Hasan', soyad='Korucu' where id='1'";
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.
-
$sql="delete from ogrenciler where id='1'";
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.
-
$sql="delete from ogrenciler where ad='Hasan' and soyad='Korucu'";
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.
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

Haziran 14th, 2009 on 15:12
Çok sade ve anlaşılır olmuş.ben yeni başlıyorum php ye inşallah .öğrenirim ve sizler gibi insanlara faydalı olurum.
Kasım 24th, 2009 on 00:31
selam..anlatım için tşk..bir soru..bir tablo içindeki tüm verileri nasıl sileriz..yani tabloyu kaldırmadan sadece tablo içindeki tüm verilerden bahsediyorum..
Kasım 25th, 2009 on 21:53
TRUNCATE komutu sadece tablonun içindeki verileri silerek tablo yapısını korur.
TRUNCATE tablo_adi şeklinde kullanabilirsiniz.
Mayıs 12th, 2010 on 00:14
hocam benim bi sorum var benim derslerim ve öğrencilerim var ve ben öğrencılerın birden falza ders almasını istiyorum öğrencı ve ders tablosu arasında da weak entity var sısteme gırıs yapan ogrencı ders ekle yerıne geldıgınde dersler sıralanıyor ve karsılarında da checkbox var almak ıstedıgı dersı secıp ve database’ine eklenmesını istiyrum yanı bir öğrencinin matematik, fizik, kimya….. dersleri aynı anda alması sıtıyorum yardımcı olurmusunuz inşallah sorunumu tam anlata bildim şimdiden teşekkürler
Mayıs 12th, 2010 on 14:14
“ogrencilerim” tablosunda “id, ogrenciadi” kolonları ve “derslerim” tablosunda “id, dersadi” kolonlarının olduğunu varsayıyorum. id kolonları unique ve otomatik artan olarak tanımlı olmalı. “relations” adlı bir tablo daha ekleyin ve “ogr_id, ders_id” kolonları BIGINT olsun. Öğrenci formdan dersleri seçtiğinde “relations” tablosuna öğrenci id’si ve ders id’leri ayrı ayrı her ders için eklenir. Dersleri listelerken de relations tablosundan ‘where=”$ogr_id”‘ sorgusunu kullanarak dersleri listeletebilirsiniz. Biraz karmaşık bir anlatım zamanım olunca şema çizerek gösteririm.
Temmuz 26th, 2010 on 14:55
Php kodlarıyla tablo yaratma bölümünde ufacık bir yazım hatası var. $olustur adlı değişkenin içine atadığın sql sorgusunu tek tırnak içerisinde yazmışsın, sanırım bu yüzden çalışmıyor. Çift tırnak olması gerektiğini düşündüm ve hatta denedim, çalıştı. Bu mesajı yayınlama tabii
sevgiler
Temmuz 27th, 2010 on 11:50
Sevgili Sıdkı;
Aslında sorguda tek veya çift tırnak kullanılmadığı sürece her iki yazım da doğrudur. Çalışmamasının kullanılan php çekirdeği ile alakası olabilir. Bazı sürümler kurulumla gelen ayarlarda default olarak sadece tek veya sadece çift tırnak kullanmaya izin veriyor sanırım. Emin olmak için denedim, bende çalıştı.
Ağustos 2nd, 2010 on 17:17
Abicim çok saol ya .. Uzun zamandır arıyordum .. Teşekkürler ..
Ağustos 2nd, 2010 on 17:17
Abicim çok saol ya .. Uzun zamandır arıyordum .. Teşekkürler ..
Kasım 16th, 2010 on 00:38
çok teşekkürler hocam, çok güzel bir anlatım, yavaş yavaş ısınıyorum bu php’ye
Nisan 20th, 2011 on 10:21
çok güzel tşk..