mysqli sınıfı ile stored procedure kullanımı
mysqli: Mysql veritabanına bağlanmak ve yönetmek için kullanılan, henüz yeteri kadar yaygınlaşmamış olsa da, kesinlikle tavsiye ettiğim bir sınıftır. Bu sınıf sayesinde mysql veritabanına daha hakim, daha profosyonel betikler yazılabilir.
stored procedure: yerleşik yordam gibi benim tuhaf gördüğüm çevirileri olsa da, "kayıtlı yöntem" şeklinde çevirmemizde sakınca görmediğim, çok sık yaptığımız işlemleri kolaylaştırmak adına yazdığımız sorgu kümesidir. Prosedürlerin return koumutunu kullanmadığını göz ardı edersek, php deki fonksiyonlarla denk görebilirsiniz.
Ben de bugün önemli gördüğüm bu iki konuya değinmek istedim.
Fazla uzatmadan kodlara geçelim.
<? $mysqli = mysqli_init(); // Sınıfı oluştur $mysqli->real_connect('localhost','root','123456','deneme'); // localhost adresindeki deneme veritabanına, root kullanıcısı ve 123456 şifresi ile bağlan // Daha önce ogrenci adında tablo oluşturulmuşsa kaldır $mysqli->real_query (' CREATE TABLE ogrenci ( numara INT(10) default \'0\', isim VARCHAR(50), PRIMARY KEY (numara) ) // numara ve isim alanlarından oluşan ogrenci tablosunu oluştur $mysqli->real_query('INSERT INTO ogrenci VALUES (041262052,\'Gündüz Can YILMAZ\'),(041262030,\'Ali KANKALLI\')') or die('INSERT: '.$mysqli->error); // veritabanına beni ve Ali'yi ekle :) // denemesp adında prosedür varsa sil $mysqli->real_query (' CREATE PROCEDURE denemesp(no INT(11)) BEGIN SELECT isim FROM ogrenci WHERE numara=no; END // numarasıyla çağırdığımda, isim alanını seçen denemesp prosedürünü oluştur // denemesp prosedürünü numaramla çağır $sonuc=$mysqli->store_result(); // Son çalışan sorgunun sonuçlarını al $db=$sonuc->fetch_assoc(); // gelen sonuçları $db adındaki diziye at $sonuc->free_result(); // sonuçları temizle // Çıktı: Gündüz Can YILMAZ ?>
Bu örnek basit bir amaç için yazıldığından, sizin için çok cazip gelmeyebilir ancak,
numarasını girdiğim öğrencinin devamsızlık bilgilerini "rapor" tablosuna kaydet,
notlarını ve telefon numarasını "sms" tablosuna kaydet,
girmediği sınavları "uyarı" alanına kaydet,
geçtiği dersleri "ogrenci_alacak_ders" tablosundan sil
...
şeklinde çoklu amaç güden işlemlerde stored procedure'ler ve örnekte hiç kullanmadığımı şimdi farkettiğim mysqli->multi_query fonksiyonu size kolaylık sağlar.
NOT: mysqli->init() şeklindeki sınıf kullanımlarını mysqli_init() olarak fonksiyon yöntemi ile de kullanabilrisiniz. Aynı şey, mysql_real_query mysqli_free_result, mysqli_fetch_assoc ve diğerleri için de geçerlidir