veritabanından var olan bilgileri almak için veya bilgi girmek,düzeltmek için veya bilgi silmek için öncelikle MySQL veritabani sunucusuna bağlantı olayını gerçekleştirmemiz lazım.
Bunun için
$hostname,$kullaniciadi,$sifre bilgileirinin bilinmesi lazım.
mysql_connect () PHP'nin sundugu mysql_connect () fonksiyonu ile MySQL veritabani sunucusuna baglanti acilir. Uc argument alir :
SUNUCU MAKINE ADRESI
KULLANICI ADI
SIFRE
Eğer evde kendiniz bir apache server kurduysanız genelde buraya localhost yazılır. Fakat bir web sunucusunda bağlantı yapmak isterseniz buraya ve sunucunuzun size verdiği domaini string olarak yazmalısınız.
Gelelim
$kullaniciadi ve $sifre değişkenlerine bu değişkenlerin yerinede ister direk web sunucunuzun size vereceği kullanıcı adı ve şifresini yazabilirsiniz.
<?
$hostname="localhost";
$kullaniciadi="adnan";
$sifre="sifreyildiz";
$baglantim=mysql_connect($hostname,$kullaniciadi,$sifre); ?>
Biz değişkenlere atama şeklinde yaptık ama direkte yazabilirsiniz.
mysql_pconnect();Kalıcı bir bağlantı yapmak içinde
<?$baglantim=mysql_pconnect($hostname,$kullaniciadi,$sifre); ?>
komutunu kullanabilirsiniz. Siz bağlantıyı sonlandırmadıkça bağlantı hep aktif kalacaktır.
bağlantıyı sonlandırmak içinde ;
mysql_close();<?mysql_close($baglantim); ?>
Sunucumuza bağlandık, sıra geldi veritabanına bağlanmaya;
mysql_select_db() <?
$baglantim=mysql_connect($hostname,$kullaniciadi,$sifre);
// suucuya bağlandık veri tabanını seçelim.
mysql_select_db("veri tabanı ismi");
?>
kodda görüldüğü gibi
mysql_select_db() argüman olarak mysql de tablolarınızın içinde bulunduğu veri tabanını ismini alıyor.
mysql_query() Veri tabanınıda seçtik artık veri tabanına sorgu gönderecez şimdide bunu yapalım.
Veri tabanına sorgu göndermek için
mysql_query() komutu kullanılır. Bu komutun kullanımı şöylerdir.
<?
$sql="select * from tablo where id='1'";
$sorgu=mysql_query($sql,$baglantim);
//yada
$sorgu=mysql_query("select * from tablo where id='1'",$baglanti);
?>
Görüleceği üzere $sql değişkenine sql kodunu yazdık. $sorgu adında bir değişken tanımlayarak sözkonusu fonksiyonumuzun ilgili yerlerine sql ve veritabanı bağlantı kodlarını aktardığımız değişken isimlerini yazarak kullanıma hazır hale getirdik.
Yani bu sorgu değişkenine tablo isimli tablodan id alanı 1 olan satırdaki tüm bilgileri alıyor.
Şimdide bu sorguda kaç satırlık bilgi var bunu öğrenelim
mysql_num_rows($sorgu);<?
$sql="select * from tablo where id='1'";
$sorgu=mysql_query($sql,$baglantim);
//yada
$sorgu=mysql_query("select * from tablo where id='1'",$baglantim);
$satir_sayisi=mysql_num_rows($sorgu);
?>
$satir_sayisi=mysql_num_rows($sorgu); ile $satir_sayisi değişkenine bu sorgu sonucunda kaç satır değer dönecek aktarmış olduk.
Şimdide çektiğimiz verileri nasıl düzenli bir hale getirip sayfamızda göstereceğiz bunu görelimBu işlem için kullanılan fonksiyonları görelim;
mysql_fetch_array(), mysql_fetch_assoc(),mysql_fetch_row() <?
$baglantim=mysql_connect($hostname,$kullaniciadi,$sifre);
$sql="select * from tablo where id='1'";
$sorgu=mysql_query($sql,$baglantim);
$sonuc=mysql_fetch_array($sorgu);
echo $sonuc["tablealan1"];
echo $sonuc["tablealan2"];
?>
$sorgu=mysql_query($sql,$baglantim);
$sonuc=mysql_fetch_array($sorgu);
$sorgu dizisindeki değerleri satır satır okur ve $sonuc dizisine atar.
$sonuc değişkenine sorgumuzu aktardık ve
$sonuc["tablealan1"] şeklinde tabledeki alanları sayfaya dökebiliriz.
Yine
$sonuc["tablealan1"] şeklinde değilde eğer sütun numarasını (yani alanları sıralarken alta doğru sayın hangisi hangi numaraya rast geliyorsa) biliyorsanız
$sonuc[0] şeklindede yazabiliriz.
Unutmadan
mysql_fetch_assoc() fonksiyonunuda burada söyleyelim çünkü kullanımları aynı yalnızca sütun no işlemi bu fonksiyonda yok.
Yani
$sonuc[0] olayını bu mysql_fetch_assoc() fonksiyonunda kullanamazsınız.
$sonuc["tablealan1"] şeklinde yazılması gerekir.
mysql_fetch_row($sorgu) kullandığınızda ise
$sonuc["tablealan1"] kullanamaz ama
$sonuc[0] kullanabilirsiniz.
Sonuç olarak mysql_fetch_array her ikisini yaparken ,
mysql_fetch_row() fonksiyonu
$sonuc[0] sütun no gibi,
mysql_fetch_assoc() fonksiyonu ile
$sonuc["tablealan1"] gibi kullanılıyor.
Eğer sorgumuzda 1den fazla satır var ise ve verileri ardı ardına sıralamak istiyorsak kodumuzda bir döngü çalıştırmalıyız örneğin;
<?
$baglantim=mysql_connect($hostname,$kullaniciadi,$sifre);
$sql="select * from tablo";
$sorgu=mysql_query($sql,$baglantim);
while ($sonuc = mysql_fetch_array($sorgu)) { // veya mysql_fetch_assoc()
echo $sonuc["tablealan1"];
echo $sonuc["tablealan2"];
}
?>
mysql_result () sonuclarin bir baska fonksiyon olan
mysql_result () ile nasil ekrana getirilecegine bakalim.Bu fonksiyon dahili bir sonuc belirleyicisini , satir numarasini ve alan ismini argument olarak alir.
<?
$sql="select * from table";
$sorgu=mysql_query($sql,$baglantim);
$deger=mysql_result($sorgu,0,0);
echo $deger;
?>
$deger=mysql_result($sorgu,0,0);mysql_result(sorgumuz,satır,sütun);
0,0 ile ilk satırdaki ilk alanın değeri
mesela; adi,soyadi,nick alanlar var ise , ilk kayıtta da adnan yıldız var ise sonuç
adnan olarak dönecektir.
Şu şekilde kullanılabilinir.
$deger=mysql_result($sorgu,0,"adi"); <?
$sql="select * from table";
$sorgu=mysql_query($sql,$baglantim);
$deger=mysql_result($sorgu,0,"adi");
echo $deger;
?>
Yani sütun numarası yerine alan adı yazarak.
For döngüsünü kullanarak birden fazla kayıtları listelemek istersek;
for ($i=0;$i < mysql_num_rows($sorgu); $i++) {
echo "'",mysql_result($sorgu, $i, "nick"), "' isimli kullanicinin adi: ",mysql_result($sorgu, $i, "adi"),"<P>";
}
Sonuç şu şekilde çıkar :
'Turkoder' isimli kullanicinin adi: Adnan
NOT : Eger gercekten belirli bir sebebiniz yoksa mysql_result () fonksiyonunu kullanmayaniz.Bu fonksiyon diger veri erisim fonksiyonlarindan yavastir.
mysql_free_result() Son olarak sorgumuz bitirdikten sonra bu sorguları bellekten silmeyi öğreneceğiz. Eğer sorgular bellekte birikirsi bu sunucumuza fazla yüklenmemize neden olur. Buda yapacağınız yeni sorguların yavaşlaması dolayısıyla sitenizin yavaşlamasına neden olur.
Bellekte tutulan sorgu sonuçlarını silmek için php de mysql_free_result() fonksiyonu kullanılır.
Örneğin:<?
$baglantim=mysql_connect($hostname,$kullaniciadi,$sifre);
$sql="select * from tablo";
$sorgu=mysql_query($sql,$baglantim);
while ($sonuc = mysql_fetch_assoc($sorgu)) {
echo $sonuc["tablealan1"];
echo $sonuc["tablealan2"];
}
mysql_free_result($sorgu);
?>