Php İle Mysql Veritabanından Bilgi Çekme
Mysql_fetch_assoc, mysql_fetch_row, mysql_fetch_object, mysql_fetch_array ve mysql_result metodları
Uygulamada kullanacağımız veritabanı
Veritabanı: kitaplik | ||
Tablo: kitaplar | ||
isbn | adi | yazari |
944503382 | Adım Adım Access 2000 | X |
881192131 | Sabahın Körü | Y |
baglan.php
$user = "root"; //veritabanı kullanıcı adı
$pwd = "1234"; //veritabanı şifresi
$host = "localhost"; //mysql server
$db = "kitaplik"; //veritabanı adı
$conn = mysql_connect($host,$user,$pwd) or die("MySQL sunucusuna baglanilamadi!!!".mysql_error());
mysql_select_db($db) or die("Veritabani secilemedi!!!".mysql_error());
?>
baglan.php dosyası, veritabanına bağlantının yapılmasını sağlayan blokları içeren dosyamızdır. böylece her sayfada bu kodları yeniden yazmak yerine sadece sayfaya dahil edeceğiz.
mysql_fetch_assoc
mysql_fetch_assoc, mysql_query ile dönen sonuç kümesini işleyerek her satırı diziye aktarır. Dizi elemanlarının index anahtarları ise, sütun isimlerinden oluşur. Örnekte; ilk olarak bağlantı dosyamızı içeri aktarıyoruz. Hemen ardından kitaplar tablomuzdan isbn ve adi alanlarını seçiyoruz. Eğer sonuç kümesi boş değilse, her bir satır için while döngüsü ile mysql_fetch_assoc, bilgileri $oku isimli bir dizi oluşturup içerisinde depoluyor. Ardından verileri ekrana basarken bilgileri $oku['sutun_adi'] formatında çağırıyoruz. Eğer kayıt yoksa uyarıp en sonunda bağlantımızı kapatıyoruz.
require_once("./baglan.php");
$sonuc = mysql_query("select isbn,adi from kitaplar");
if(mysql_num_rows($sonuc)!=0)
{
while($oku = mysql_fetch_assoc($sonuc))
{
echo "Kitap adi: ".$oku["adi"]."
Kitap ISBN: ".$oku["isbn"]."
";
//echo $.oku["yazari"]; //bu satir hatalidir cunku sql sorgumuzda yazari alanini secmedik
}
}else{
echo "Hic kayit yok!";
}
mysql_close($conn);
?>
mysql_fetch_object();
mysql_fetch_object, mysql_query ile dönen sonuç kümesini işleyerek her satırı oluşturulan nesneye sütun adıyla özellik şeklinde aktarır. Örnekte; ilk olarak bağlantı dosyamızı içeri aktarıyoruz. Hemen ardından kitaplar tablomuzdan isbn ve adi alanlarını seçiyoruz. Eğer sonuç kümesi boş değilse, her bir satır için while döngüsü ile mysql_fetch_object, bilgileri $oku isimli bir nesne oluşturup içerisinde depoluyor. Ardından verileri ekrana basarken bilgileri nesne yönelimli mantıkla $oku->sutun_adi formatında çağırıyoruz. Eğer kayıt yoksa uyarıp en sonunda bağlantımızı kapatıyoruz.
require_once("./baglan.php");
$sonuc = mysql_query("select isbn,adi from kitaplar");
if(mysql_num_rows($sonuc)!=0)
{
while($oku = mysql_fetch_object($sonuc))
{
echo "Kitap adi: ".$oku->adi."
Kitap ISBN: ".$oku->isbn."
";
//echo $.oku->yazari; //bu satir hatalidir cunku sql sorgumuzda yazari alanini secmedik
}
}else{
echo "Hic kayit yok!";
}
mysql_close($conn);
?>
mysql_fetch_row
mysql_fetch_row, mysql_query ile dönen sonuç kümesini işleyerek her satırı diziye aktarır. Dizi elemanlarının index anahtarları, sorgudaki çekilme sıralarına göre sıfırdan başlayarak devam eder.Örnekte; ilk olarak bağlantı dosyamızı içeri aktarıyoruz. Hemen ardından kitaplar tablomuzdan isbn ve adi alanlarını seçiyoruz. Eğer sonuç kümesi boş değilse, her bir satır için while döngüsü ile mysql_fetch_row, bilgileri $oku isimli bir dizi oluşturup içerisinde depoluyor. Ardından verileri ekrana basarken bilgileri $oku[0] formatında çağırıyoruz. Eğer kayıt yoksa uyarıp en sonunda bağlantımızı kapatıyoruz.
Dikkat edilmesi gereken nokta, index numaralarıdır. Gördüğünüz gibi isbn sütunu ilk çekildiği için 0 index numarasını almıştır.
require_once("./baglan.php");
$sonuc = mysql_query("select isbn,adi from kitaplar");
if(mysql_num_rows($sonuc)!=0)
{
while($oku = mysql_fetch_row($sonuc))
{
echo "Kitap adi: ".$oku[1]."
Kitap ISBN: ".$oku[0]."
";
//echo $.oku[2]; //bu satir hatalidir cunku sql sorgumuzda üçüncü bir alan(yazari alanini) secmedik
}
}else{
echo "Hic kayit yok!";
}
mysql_close($conn);
?>
mysql_fetch_array()
mysql_fetch_array, mysql_fetch_assoc ve mysql_fetch_row fonksiyonlarının birleştirilmiş hali olarak düşünülebilir. Kullanım sırasında aldığı ikinci parametre (MYSQL_ASSOC, MYSQL_NUM, MYSQL_BOTH) diziye erişim sırasında kullnacağınız index anahtarı tipini belirlemenizi sağlar.
require_once("./baglan.php");
$sonuc = mysql_query("select isbn,adi from kitaplar");
if(mysql_num_rows($sonuc)!=0)
{
while($oku = mysql_fetch_array($sonuc,MYSQL_BOTH))
{
echo "Kitap adi: ".$oku[1]."
Kitap ISBN: ".$oku["isbn"]."
";
//echo $.oku[2]; //bu satir hatalidir cunku sql sorgumuzda üçüncü bir alan(yazari alanini) secmedik
}
}else{
echo "Hic kayit yok!";
}
mysql_close($conn);
?>
MYSQL_ASSOC | Fonksiyon kullanımı mysql_fetch_assoc ile aynı olacaktır.Dizi elemanlarına sütun ismi ile ulaşılabilir |
MYSQL_NUM | Fonksiyon kullanımı mysql_fetch_row ile aynı olacaktır.Dizi elemanlarına sütun numarası ile ulaşılabilir |
MYSQL_BOTH | Dizi elemanlarına hem sütun adı hem sütun numarası ile ulaşılabilir |
mysql_result()
mysql_result, sql sorgusundan tek bir sütun içeriğini çeker. Örneğimizde sadece adi sütunu üzerinde işlem yapacağız. Sorgudan hemen sonra sonuç kümesinin satır sayısını $satir içerisine alıyoruz ve $basla değişkenini sıfıra eşitliyoruz. Ardından sonuç kümesi satır sayısı sıfıra eşit değilse(boş değilse), okunan satır sayısı toplam satır sayısına eşitlenene kadar dönecek bir döngü bloğu içerisinde mysql_result kullanıyoruz. İşlemlerin sonunda mysql bağlantısını kapatıyoruz.
require_once("./baglan.php");
$sonuc = mysql_query("select adi from kitaplar");
$satir = mysql_num_rows($sonuc);
$basla = 0;
if($satir!=0)
{
while($basla<=$satir)
{
echo "Kitap adi: ".mysql_result($sonuc,$basla); //her satırdaki adi kolonu
$basla++;
}
}else{
echo "Hic kayit yok!";
}
mysql_close($conn);
?>
Şurada bir bağlantı örneği var.
Kaynak:Baturay Daylak
-
selim
merhaba ben basit bir rezervasyon sistemi yapacağım, dönem ödevim olduğu için erkenden yapmam lazım. anlatıyorum... veri tabanındaki rezervasyon tablosunda oda seçeneğinden gelen veriye göre hareket edeceğim yani bu sayfada yazağım kodların algoritması şöyle olacak... sayfa load olduğunda veri tabanı kontrol edilecek "oda" alanında 1 var mı var ise 1. radio yu disable yap , 2 var mı var i ise 2. radio yu disable yap yok ise birşey yapma .... bu şekilde olacak sadece oraya yazacağım kodlar hakkında yardımcı olsan çok minnettar olacağım12 Aralık 2012 22:30:41, Çarşamba -
Salih
Verdiğiniz bilgiler için teşekkürler. Benim bikaç sorum olacak elimde cms çince sistemler var çinin baidu haritasını kullanıyor bende yerine yandex haritalarını kullanmak istiyorum haritada konumları elle girmek gerekiyor fakat her kullanıcının farklı adresleri var bunuda sqlden çekmek istedim olmadı... Bana yardımcı olabilirmisiniz?04 Nisan 2013 21:19:43, Perşembe -
ufuk
Paylaşım için teşekkürler, Benim sorum şu şekilde olucak; veri çekmek için neden aynı işi yapan bu kadar fonksiyona ihtiyaç duyulmuştur? Acaba bu fonksiyonların birbirine göre veri çekme işlemini yaparken bir güvenlik zaafiyet dereceleri var mıdır? Hangisini kullanmalıyız?15 Haziran 2014 05:31:17, Pazar -
cem
merhabalar arkadaslar gunlerdir yapamadigim bir sorunu sizlerle paylasmak istiyorum.
benim bir sitem var ve siteye kayitli olan br kisi siteye ilan verdi diyelim ve siteye verilen ilaniben ilan verenin kac ilan verdigini ona rakam olarak gostermek istiyorum. yani toplamornek diyeleim
verilen ilan 1diye yazdirmak istiyorum tabi her ilan verdiginde bu rakamlar artacak ilan durumuna gore,,php bilgim fazla degim girilienilani rakam ile gostermek istiyorum. yardim icin cok tesekurler...08 Kasım 2015 11:28:34, Pazar